Définition côté maître dans la relation 1:1 d'Entity Framework
Quel est le terminal principal ?
Dans une relation 1:1, une entité doit être désignée comme maître et l'autre entité comme esclave. Le maître est l'entité qui possède la relation ou est responsable du maintien de la relation, tandis que l'esclave dépend de l'existence de l'entité maître.
Analyse des erreurs de code
L'erreur que vous rencontrez dans Entity Framework est due au fait que le côté principal ne définit pas clairement la relation entre Foo et Boo. Entity Framework nécessite cette spécification pour déterminer quelle clé primaire de l'entité sera utilisée comme clé étrangère pour l'entité subordonnée.
Maître et esclave dans une relation 1:1
Dans votre code, la relation entre Foo et Boo est une relation individuelle. Voici comment identifier le maître :
Dans votre exemple, Foo devrait être le maître puisqu'il peut exister indépendamment de l'entité Boo. Boo, en revanche, dépend de Foo car il doit insérer la clé primaire Foo dans la base de données.
Configurer le terminal principal
Il existe deux façons de configurer le côté maître d'une relation 1:1 dans Entity Framework :
Cartographie fluide :
<code class="language-csharp">modelBuilder.Entity<Foo>() .HasOptional(f => f.Boo) .WithRequired(s => s.Foo);</code>
Annotation des données :
<code class="language-csharp">public class Foo { [Key] public string FooId { get; set; } public Boo Boo { get; set; } } public class Boo { [Key, ForeignKey("Foo")] public string BooId { get; set; } public Foo Foo { get; set; } }</code>
En définissant le maître, vous spécifiez que Foo est propriétaire de la relation, et Boo ne peut exister que si l'enregistrement Foo correspondant existe.
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!