Maison >développement back-end >C++ >Comment définir la fin principale dans les relations 1:1 d'Entity Framework ?

Comment définir la fin principale dans les relations 1:1 d'Entity Framework ?

DDD
DDDoriginal
2025-01-21 22:41:11961parcourir

How Do I Define the Principal End in Entity Framework 1:1 Relationships?

Relations Entity Framework 1:1 : définition de la fin principale

Dans les relations un-à-un d'Entity Framework, l'identification correcte des entités principales et dépendantes est vitale pour l'intégrité de la base de données. L'entité principale existe indépendamment et est insérée en premier ; l'entité dépendante s'appuie sur le principal et y fait référence. L'incapacité de définir la fin principale entraîne des erreurs comme celle illustrée dans l'exemple, où Entity Framework ne peut pas déterminer l'ordre d'insertion.

Identification de l'entité principale

L'entité principale est celle qui peut exister sans l'entité dépendante. Il détient généralement la clé primaire, agissant en tant que « parent » dans la relation. Dans un scénario où l'entité « Boo » fait référence à « Foo » via une clé étrangère, « Boo » est généralement l'entité dépendante et « Foo » est le principal.

Spécifier la fin principale

Pour résoudre l'erreur « Fin principale non définie », utilisez soit l'API Fluent, soit des annotations de données dans votre modèle Entity Framework :

API fluide :

Cette approche utilise du code pour définir la relation :

<code class="language-csharp">modelBuilder.Entity<Foo>()
    .HasOptional(f => f.Boo)
    .WithRequired(s => s.Foo);</code>

Cet extrait de code désigne Foo comme l'entité principale. HasOptional indique qu'une Foo entité peut ou non avoir une entité Boo associée, tandis que WithRequired précise qu'une Boo entité doit avoir une entité Foo associée.

Annotations de données :

Cette méthode utilise des attributs au sein de vos classes d'entité :

<code class="language-csharp">public class Boo
{
    [Key, ForeignKey("Foo")]
    public string BooId { get; set; }
    public Foo Foo { get; set; }
}</code>

Ici, l'attribut ForeignKey sur BooId lie explicitement Boo à Foo, faisant implicitement de Foo l'entité principale.

En définissant clairement la fin principale, Entity Framework gère correctement l'ordre d'insertion et maintient la cohérence des données dans vos relations one-to-one.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn