Je viens de lire this nice article qui m'a appris à utiliser l'héritage (Table par hirarchie). Je me demandais, disons que j'ai une colonne "HireDate" qui doit utiliser dans la sous-classe. C'est sûr que dans la base de données, il doit être marqué comme nullable, mais comment puis-je marquer non nullable dans l'EDM? J'ai essayé de le définir comme non-nullable, mais ensuite il dit qu'il a besoin d'une valeur par défaut, et je veux que la valeur par défaut soit DateTime.Now, pas une valeur constante.Champs non nullables dans l'héritage de table - EDM
Répondre
Si une propriété (telle que HireData) est déclarée sur un type dérivé et que vous utilisez TPH, vous devriez pouvoir la marquer comme non-nullable dans l'EDM malgré le fait qu'elle soit nulle dans la base de données.
En fait cette capacité est l'une des caractéristiques de TPH.
...
Alors j'ai regardé au poste de blog en question, et a remarqué qu'il a un problème, car il expose la colonne discriminante (PersonCategory
) en tant que propriété de l'entité de base, qui, si elle a permis rendrait le type d'une entité mutable, puisque vous pourriez facilement faire cela:
student.PersonCategory = 2;
Qui rendrait un étudiant un administrateur! Et ce n'est pas autorisé par l'EF. Par conséquent, si vous suivez cet exemple de près, il est probable que ce soit votre problème.
La colonne qui contient le discriminateur ne doit pas être mappée à une propriété dans l'EDM, elle doit uniquement être utilisée dans le mappage (par exemple, "Ajouter une condition" dans "Mappages vers XXX").
Solution au problème dans le blog: Supprimer la propriété PersonCategory de la classe Person.
Quoi qu'il en soit, j'espère que cela aide
Alex
- 1. Scala, champs JPA et nullables
- 2. HQL Bug et champs nullables
- 3. Mise à jour des champs booléens nullables dans Entity Framework
- 4. Sérialiser des champs nullables à partir d'un objet C#
- 5. Fermeture d'un ObjectContext EDM?
- 6. Problèmes avec les associations EDM
- 7. nullables énumérations (??) et LinqToSQL
- 8. Comment obtenir des colonnes non nullables d'une table en utilisant java?
- 9. problème avec EDM dans ASP.NET MVC
- 10. Nullables? Les détecter
- 11. Champs de table auto-référencés dans MySQL
- 12. Champs de la table USR02 dans SAP
- 13. comparaison égalité SQL/inégalité des valeurs nullables
- 14. omettent types nullables dans LINQ-requête sql
- 15. Utilisation de types nullables dans les arborescences d'expression
- 16. Utilisation de types nullables en C#
- 17. Obtenir des champs qui existent mutuellement et non mutuellement dans la même table dans deux colonnes
- 18. CakePHP: champs non remplis dans l'écran d'édition
- 19. types IsNull et nullables dans LINQ
- 20. Comparer des DateTime nullables dans VB.net
- 21. edm étant marqué comme SPAM par hotmail
- 22. entité - requête de filtrage avec nullables clés de jointure
- 23. types nullables rompent toXml() dans subsonique 2.2
- 24. Table alias - Colonne inconnue dans la liste des champs
- 25. Efficacité du cache LINQ/EDM dans une application Web
- 26. Table de SQL Date Comparaison de champs
- 27. formulaires imbriqués avec des champs non modifiables supplémentaires dans la table enfant
- 28. Doctrine 2 table de jointure + champs supplémentaires
- 29. cakePHP Table Convention de nommage des champs
- 30. Comment comparer les types nullables?
Pourquoi ne pas utiliser une table par classe? "Vous n'aurez pas besoin" de réinventer le vélo. – Restuta
Ne pas utiliser de table par classe avec EF qui n'est certainement pas recommandé ... voir http://blogs.msdn.com/alexj/archive/2009/04/15/tip-12-choosing-an- inheritance-strategy.aspx –
Désolé, je veux dire table par type. – Restuta