Maison >développement back-end >C++ >Comment mettre en œuvre des relations multiples-à-plusieurs avec des domaines supplémentaires dans l'entité Core Framework?

Comment mettre en œuvre des relations multiples-à-plusieurs avec des domaines supplémentaires dans l'entité Core Framework?

Barbara Streisand
Barbara Streisandoriginal
2025-01-31 10:46:10823parcourir

How to Implement Many-to-Many Relationships with Extra Fields in Entity Framework Core?

Entité Core Framework: Gestion des relations multiples-à-plusieurs avec des champs supplémentaires

L'API CLAT de l'entité Core a des limites lors de la personnalisation des tableaux d'association relationnelle de plusieurs à plusieurs. Cet article détaille une solution de contournement pour ajouter des champs supplémentaires à la table de jointure.

conception du modèle

Considérez cet exemple de modèle:

<code class="language-csharp">public class Member
{
    public int MemberID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<MemberComment> MemberComments { get; set; }
}

public class Comment
{
    public int CommentID { get; set; }
    public string Message { get; set; }
    public virtual ICollection<MemberComment> MemberComments { get; set; }
}

public class MemberComment
{
    [Key, Column(Order = 0)]
    public int MemberID { get; set; }
    [Key, Column(Order = 1)]
    public int CommentID { get; set; }
    public virtual Member Member { get; set; }
    public virtual Comment Comment { get; set; }
    public int Something { get; set; }
    public string SomethingElse { get; set; }
}</code>

Le tableau MemberComment représente la table de jointure, y compris les propriétés supplémentaires Something et SomethingElse.

limitations et solutions de l'API courantes

Configuration directe de la table de jointure avec des champs supplémentaires à l'aide de l'API Cluent n'est pas possible. La solution consiste à implémenter deux relations un à plusieurs à la place.

Approche un à plusieurs: requêtes et opérations

Cette approche permet une requête et une manipulation de données similaires (ajoutant, mise à jour, supprimer) en tant que relation traditionnelle de plusieurs à plusieurs. Surtout, il permet le filtrage en fonction des champs supplémentaires de la table de jointure. Les suppressions en cascade fonctionneront correctement en raison des clés étrangères non nulles dans la table de jointure.

Conclusion

Alors que l'API Fluent ne prend pas directement en charge les tables de jointure personnalisées de plusieurs à plusieurs, en utilisant deux relations un à plusieurs fournit un équivalent fonctionnel, offrant la flexibilité d'inclure et d'utiliser des champs supplémentaires au sein de l'association.

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