首頁 > 後端開發 > C++ > 如何首先與EF核心代碼中的額外字段實現多一關係?

如何首先與EF核心代碼中的額外字段實現多一關係?

Linda Hamilton
發布: 2025-01-31 10:56:10
原創
781 人瀏覽過

How to Implement Many-to-Many Relationships with Extra Fields in EF Core Code First?

在EF Core Code First中實現具有額外字段的多對多關係

簡介:

Entity Framework Core (EF Core) 允許在實體之間創建多對多關係。但是,EF Core 不直接支持自定義管理這些關係的連接表。本文探討了一種使用 Code First 在關聯表中創建具有附加字段的多對多關係的替代方法。

創建關聯:

我們將創建兩個一對多關係,而不是直接的多對多關係。例如,考慮以下場景:

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 int Something { get; set; }
    public string SomethingElse { get; set; }
    public virtual Member Member { get; set; }
    public virtual Comment Comment { get; set; }
}
登入後複製

在此場景中,Member 和 Comment 實體具有多對多關係,而 MemberComment 代表具有附加字段的關聯表。

查詢:

要查詢具有附加字段的關聯,可以使用稱為“投影”的技術:

// 查找 LastName = "Smith" 的成员的所有评论
var commentsOfMembers = context.Members
    .Where(m => m.LastName == "Smith")
    .SelectMany(m => m.MemberComments.Select(mc => mc.Comment))
    .ToList();
登入後複製

操作:

在此模型中添加實體和關係類似於其他 Code First 模型:

var member1 = new Member { FirstName = "Pete" };
var comment1 = new Comment { Message = "Good morning!" };
var memberComment1 = new MemberComment { Member = member1, Comment = comment1, Something = 101 };
context.MemberComments.Add(memberComment1); // 这也会添加 member1 和 comment1
context.SaveChanges();
登入後複製

結論:

雖然 EF Core 不直接支持在關聯表中具有附加字段的多對多關係,但可以使用兩個一對多關係來創建類似的功能。這種方法允許創建具有附加信息的豐富關聯,從而實現更靈活的數據建模和查詢功能。

以上是如何首先與EF核心代碼中的額外字段實現多一關係?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板