Unidirectionnel One-to-One relation dans le Cadre de l'Entité
Ci-dessous un exemple de one-to-one relation déclenche une exception
public class User
{
public int Id { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public User User { get; set; }
}
Exception dit:
Impossible de déterminer les principales d'une association entre la
types de ConsoleApplication1.Adresse " et " ConsoleApplication1.L'utilisateur".
Le principal de cette association doit être configuré de manière explicite
soit en utilisant la relation API fluent ou des annotations de données.
il fonctionne si je supprime une propriété de l'Utilisateur à partir de l'Adresse mais je ne veux pas.
Comment puis-je avoir une telle relation sans exception ?
OriginalL'auteur Freshblood | 2012-05-05
Vous devez vous connecter pour publier un commentaire.
Alors que la réponse fournie par Eranga est correct et crée un partagé clé primaire de l'association entre l'Utilisateur et de l'Adresse, vous risquez de ne pas l'utiliser en raison des limites de ce type de mapping.
Ici est une autre façon de créer un rapport de 1:1 de l'association qui est appelé un-à-un clé étrangère de l'association:
EF Code reconnaît d'Abord ce qu'un 1:1 de l'association où vous permettant d'avoir une association bidirectionnelle entre l'Utilisateur et l'Adresse.
Maintenant, tout ce que vous devez faire est de définir une contrainte de Clé Unique sur le nom de la colonne pour faire de votre relation un vrai un à un sur votre base de données secondaires. Une façon de le faire est d'utiliser une Semence de la méthode qui a été substituée à une coutume de l'initialiseur de classe:
Le code ci-dessus entraînera le schéma suivant:
OriginalL'auteur Morteza Manavi
Vous devez utiliser l'API fluent à la carte la relation partagée de la clé primaire.
Le PK de
Address
devrait également être un FK àUser
table PK.Je ne pouvais pas comprendre ce que je dois faire
Si vous le permettez EF pour créer la base de données(par exemple: à l'aide d'un
IDatabaseInitializer
), il va créer le FK mentionnés ci-dessus.Avez-vous essayé ? J'ai essayé en application simple et il n'a pas vraiment créé.
OriginalL'auteur Eranga