Maison >développement back-end >C++ >Comment résoudre l'ambiguïté dans les relations 1:1 d'Entity Framework en définissant la fin principale ?
Entity Framework 1:1 L'importance du maître dans la relation
Dans Entity Framework, une relation un-à-un est représentée par deux classes et leurs propriétés de navigation mutuellement exclusives. Pour éliminer toute ambiguïté, un « maître » doit être spécifié. Le côté principal fait référence au côté de l'association qui insère en premier les enregistrements et gère la relation.
L'erreur rencontrée dans l'exemple résulte de la non-spécification du maître. Le code définit deux classes, Foo et Boo, chacune contenant des propriétés de navigation pointant vers l'autre classe, mais ne précise pas quelle extrémité doit avoir la priorité.
Définition du terminal principal
Dans une relation one-to-one, le maître est propriétaire de la relation et gère les contraintes de clés étrangères. C’est généralement la fin la plus stable et la plus durable de l’association. Dans la conception d'une base de données, le côté primaire est généralement identifié par la clé primaire.
Exemples et solutions
Dans l'exemple donné, la classe Foo est le maître logique puisqu'elle ne repose pas sur l'existence d'une instance Boo. En revanche, la classe Boo ne peut exister sans un Foo associé.
Pour résoudre les erreurs dans Entity Framework, le maître doit être spécifié explicitement. Ceci peut être réalisé grâce à l’annotation des données ou à une cartographie fluide. À l'aide des annotations de données, modifiez la classe Boo comme suit :
<code>public class Boo { [Key, ForeignKey("Foo")] public string BooId{get;set;} public Foo Foo{get;set;} }</code>
Vous pouvez également utiliser une cartographie fluide :
<code>modelBuilder.Entity<Foo>() .HasOptional(f => f.Boo) .WithRequired(s => s.Foo);</code>
En spécifiant le maître, les erreurs peuvent être résolues efficacement pour définir et gérer les relations un-à-un dans Entity Framework.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!