Maison > développement back-end > C++ > Comment puis-je créer une table de jointure personnalisée avec des propriétés supplémentaires dans une relation plusieurs à plusieurs utilisant le code EF en premier?

Comment puis-je créer une table de jointure personnalisée avec des propriétés supplémentaires dans une relation plusieurs à plusieurs utilisant le code EF en premier?

Patricia Arquette
Libérer: 2025-01-31 10:41:09
original
477 Les gens l'ont consulté

How Can I Create a Custom Join Table with Additional Properties in a Many-to-Many Relationship using EF Code First?

Utilisation d'une table de connexion personnalisée dans plusieurs relations

Lorsque vous utilisez d'abord le code EF, il est impossible d'utiliser une table de connexion personnalisée pour établir une relation multi-pair. La table de connexion de gestion interne EF est cachée en dehors du modèle.

Méthode alternative: une paire de relations

Pour créer une table de connexion personnalisée avec des attributs supplémentaires, vous pouvez utiliser deux méthodes différentes de relations à un multiple:

Cela crée deux multi-relations indépendantes entre le membre et le membre et les commentaires et le membre. La table de connexion est représentée par la classe membre.

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; }
}
Copier après la connexion
<种> Les avantages de cette méthode

Cette méthode présente les avantages suivants:

permet les attributs supplémentaires sur la table de connexion (comme quelque chose et quelque chose).

Fournir des requêtes plus flexibles et un filtrage par les attributs de la table de connexion.
  • réserver la suppression du niveau par convenu.
  • <示> Exemple de requête
En utilisant ce modèle, vous pouvez effectuer diverses requêtes, telles que:

Trouvez tous les commentaires avec des membres avec des noms de famille spécifiques:

  • Trouver des membres avec des noms spécifiques et leurs commentaires:
var commentsOfMembers = context.Members
    .Where(m => m.LastName == "Smith")
    .SelectMany(m => m.MemberComments.Select(mc => mc.Comment))
    .ToList();
Copier après la connexion
  • Filtrez les commentaires des membres via les attributs de la table de connexion:
var membersWithComments = context.Members
    .Where(m => m.LastName == "Smith")
    .Select(m => new
    {
        Member = m,
        Comments = m.MemberComments.Select(mc => mc.Comment)
    })
    .ToList();
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal