Relations 1:1 d'Entity Framework : définition de l'entité principale
Dans les relations un-à-un d'Entity Framework, une entité est désignée comme « principale » et l'autre comme « dépendante ». L'entité principale est celle qui existe indépendamment et possède sa propre clé primaire. L'entité dépendante, à l'inverse, s'appuie sur une clé étrangère faisant référence à la clé primaire de l'entité principale.
Exemple et identification de l'entité principale
Examinons cet extrait de code :
<code class="language-csharp">public class Foo { public string FooId { get; set; } public Boo Boo { get; set; } } public class Boo { public string BooId { get; set; } public Foo Foo { get; set; } }</code>
Ici, Foo
agit comme l'entité principale car elle possède sa propre clé primaire (FooId
). Boo
, en revanche, est l'entité dépendante, référençant FooId
via une clé étrangère.
Résolution de l'erreur « Impossible de déterminer la fin principale »
Lors de la configuration de cette relation dans Entity Framework, vous pouvez rencontrer l'erreur : "Impossible de déterminer la fin principale d'une association...". Cela est dû au fait qu'Entity Framework a besoin de conseils explicites pour identifier l'entité principale.
Configuration explicite de fin de principal
Pour résoudre ce problème, définissez clairement la fin principale à l'aide d'annotations de données ou de l'API fluide.
Méthode 1 : Annotations de données
Utilisez les attributs [Key]
et [ForeignKey]
pour spécifier la propriété de clé étrangère au sein de l'entité dépendante :
<code class="language-csharp">public class Boo { [Key, ForeignKey("Foo")] public string BooId { get; set; } public Foo Foo { get; set; } }</code>
Méthode 2 : API Fluent
Employer la méthode WithRequired()
pour désigner l'entité dépendante et HasOptional()
pour l'entité principale :
<code class="language-csharp">modelBuilder.Entity<Foo>() .HasOptional(f => f.Boo) .WithRequired(s => s.Foo);</code>
Conclusion
Il est essentiel d'identifier et de configurer correctement l'entité principale dans les relations 1:1 d'Entity Framework. En définissant explicitement la fin principale à l'aide d'annotations de données ou de l'API fluide, vous évitez l'erreur « Impossible de déterminer la fin principale » et garantissez un mappage précis de la base de données.
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!