Maison >développement back-end >C++ >Comment implémenter des relations multiples-à-plusieurs avec des tables de jointure personnalisées dans Entity Framework?
Créez des relations multiples à de nombreuses personnes avec une table de connexion personnalisée
Dans le cadre physique, la plupart des relations impliquent généralement un tableau de connexion caché d'une gestion interne. Cependant, dans certains cas, vous pouvez avoir besoin d'une table de connexion personnalisée avec des attributs supplémentaires.
Les limites de plus de relations
Malheureusement, l'utilisation de l'API fluide ne peut pas créer une relation multi-pair avec une table de connexion personnalisée. EF nécessite une table de connexion de gestion interne cachée pour réaliser plusieurs relations.
Méthode alternative
Au contraire, pour utiliser une table de connexion personnalisée avec des attributs supplémentaires, vous pouvez créer deux liens de relation One-To -Multi séparés, chaque entité à l'une des tableaux de connexion. Exemple
Considérez la scène suivante:
Dans ce modèle,
est utilisé comme une table de connexion personnalisée avec des attributs supplémentaireset
.<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>
Relation de l'enquête MemberComment
Something
SomethingElse
Pour interroger ces relations, vous pouvez utiliser l'expression Linq:
Les avantages de cette méthode
Cette méthode alternative présente les avantages suivants:
<code class="language-csharp">// 查找 LastName = "Smith" 的成员的所有评论 var commentsOfMembers = context.Members .Where(m => m.LastName == "Smith") .SelectMany(m => m.MemberComments.Select(mc => mc.Comment)) .ToList();</code>
<code class="language-csharp">// 查找 LastName = "Smith" 的所有成员及其评论 var membersWithComments = context.Members .Where(m => m.LastName == "Smith") .Select(m => new { Member = m, Comments = m.MemberComments.Select(mc => mc.Comment) }) .ToList();</code>
Tableau de connexion personnalisé: Vous pouvez contrôler la conception de la table de connexion et ajouter d'autres attributs au besoin.
Enquête:Vous pouvez dépister et vous connecter en fonction des attributs de la table de 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!