Comment déclarer une relation individuelle en utilisant Entity Framework 4 Code First (POCO)
Comment déclarer une relation à l'aide de Entity Framework 4 le Premier Code (POCO)?
J'ai trouvé cette question (un-à-un les relations dans l'Entity Framework 4) mais l'article que la réponse des références n'est pas utile (il y a une ligne de code qui est une relation 1-1, mais aucune mention de la façon de les définir).
source d'informationauteur Paul Hiles | 2010-09-01
Vous devez vous connecter pour publier un commentaire.
Êtes-vous simplement à la recherche de quelque chose de ce genre?
MODIFIER: Oui, je n'avais pas VS en face de moi, mais vous devez ajouter la ligne suivante dans le
UserMapping
au lieu de l'actuelleHasRequired
et également ajouter unProfileId
de la propriété (au lieu deProfile_Id
que vous avez ajouté):Actuellement, je ne pense pas qu'il y a un moyen de contourner cela, mais je suis sûr que ça va changer puisque nous sommes seuls dans CTP4. Ce serait bien si je pouvais dire:
De cette façon je n'aurais pas à inclure un
ProfileId
de la propriété. Peut-être il ya un moyen de contourner ce actuellement et il est encore tôt le matin pour moi de penser :).Aussi n'oubliez pas d'appeler
.Include("Profile")
si vous souhaitez inclure une "navigation à la propriété".Trois méthodes:
A) de Déclarer les deux classes avec des propriétés de navigation les unes des autres. Marque de l'une des tables (les tables dépendantes) avec le ForeignKey attribut sur sa Clé Primaire. EF déduit 1-to-1:
http://weblogs.asp.net/manavi/archive/2011/05/01/associations-in-ef-4-1-code-first-part-5-one-to-one-foreign-key-associations.aspx
Je n'ai pas utilisé
virtual
et vous ne devriez pas non plus.*B) Déclarer une hiérarchie d'héritage avec les deux noms de table explicitement indiqué, résultant en une Table Par Type et un partage de Clé Primaire.
Vous bénéficierez de 2 tables: Une pour AppUser, un pour AdminUser. AdminUser est de 1:1 avec AppUser et est Dépendante - ce qui signifie que vous pouvez supprimer une AdminUser, mais si vous supprimez un AppUser lorsqu'un AdminUser pointe toujours à elle, vous obtiendrez une Erreur de Violation de Contrainte.
C) Il y a 2 mi-chemin des méthodes pour faire un-à-un dans l'EF:
Entité De Fractionnementoù vous avez une seule Classe, mais il est stocké dans une table primaire, et 1 ou plus d'un-à-un les tables associées.
Table De Fractionnementoù un arbre d'objets s'aplatit en un seul tableau. Par exemple, une classe avec une Adresse bien aurait colonnes pour l'Adresse de l'objet, comme Address_City, aplati en un seul tableau.
*Vous pouvez inclure virtuel sur n'importe quel EF Biens ou des Collections si vous voulez paresseux-charger. Cela peut entraîner dans les boucles infinies ou le chargement de l'ensemble de la DB si vous transmettez un objet avec chargement paresseux propriétés, par exemple, à la MVC JSON converter ou autre chose qui marche dans la hiérarchie de l'objet. Le Lazy-Loading est toujours fait de façon Synchrone, le blocage du thread, et sans aucun préavis. Pour résumer, la liste de façons dont vous pouvez congeler votre code, une application ou un serveur c'est long. Éviter l'utilisation de virtual sur EF classes. Oui il y a beaucoup d'exemples de code sur internet qui l'utilisent. Non, vous ne devez pas l'utiliser.
Ajouter le Profil virtuel et le nom d'utilisateur et je pense que cela devrait vous permettre d'y parvenir.