簡體   English   中英

EF Core 3.1 如何在多對多關系中自動映射

[英]EF Core 3.1 how to automap in Many-to-many relationship

我已經在 .NET Core Entity 框架中使用 DB First 方法構建了一個數據庫模型。 我的數據庫中有幾個多對多關系,它們都用連接表表示。

像這樣:

public partial class Test1
{
    public Test1()
    {
        Test1_Test2= new HashSet<Test1_Test2>();
    }

    public int Id { get; set; }
    ..

    public virtual ICollection<Test1_Test2> Test1_Test2{ get; set; }
}

public partial class Test2
{
    public Test2()
    {
        Test1_Test2= new HashSet<Test1_Test2>();
    }

    public int Id { get; set; }
    ..

    public virtual ICollection<Test1_Test2> Test1_Test2{ get; set; }
}

public partial class Test1_Test2
{
    public int Test1Id{ get; set; }
    public int Test2Id{ get; set; }

    public virtual Test1 Test1{ get; set; }
    public virtual Test2 Test2{ get; set; }
}

EF 構建了支持這種結構的 Fluent API,在連接表中帶有外鍵和復合主鍵。

當我要在這個關系中添加一些東西時,這是一種乏味的操作,我必須按照這個思路做一些事情,以便正確填充我的連接表:

_context.Test1.Add(Test1);
_context.Test2.Add(Test2);
Test1_Test2.Test1 = Test1;
Test1_Test2.Test2 = Test2;
_context.Test1_Test2.Add(Test1_Test2);
_context.SaveChanges();

從 .NET Framework 中的舊 EF 中,我記得做一個自動映射器功能很簡單,這將使我只能執行以下操作:

Test1.Test2 = Test2; 
_context.Test1.Add(Test1);
_context.SaveChanges();

這很方便,因為 EF 計算出如何自動填充連接表。 當我必須從這些表中提出請求時,這也更加方便。

因此,我如何首先在 .Net Core EF DB 中添加“自動映射器”功能 - 這甚至支持嗎?

在 EF Core 3 中不支持多對多:

多對多

尚不支持沒有實體類來表示連接表的多對多關系。 但是,您可以通過為連接表包含一個實體類並映射兩個單獨的一對多關系來表示多對多關系。

關系(EF 核心文檔)

作為部分解決方法,您可以添加NotMapped屬性或遍歷兩個關系的函數。 您不能編寫涉及 NotMapped 屬性的查詢。

但它們存在於 EF Core 5: 關系 - EF Core - 多對多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM