[英]Many-to-many with TPC inheritance in EF Core
我在使用 TPC inheritance 配置 May-to-many 時遇到問題
public class TestB
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<ParentClass> ParentClasss { get; set; }
}
public abstract class ParentClass
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<TestB> TestBs { get; set; }
}
[Table("Child_A")]
public class Child_A: ParentClass
{
public string childAName { get; set; }
}
[Table("Child_B")]
public class Child_B: ParentClass
{
public string childbName { get; set; }
}
多對多關系在抽象 class 上,生成的表是
測試B
父類
ParentClassTestB:多對多關系
Child_A:對 ParentClass 有 FK
Child_B:對 ParentClass 有 FK
我需要的是直接與 Child_A 和 Child_B 建立多對多關系。
所以生成的表會是這樣的
測試B
孩子A
Child_ATestB:Child_A 和 TestB 之間的多對多關系表
孩子_B
Child_BTestB:Child_B和TestB的多對多關系表
問候
我需要的是直接與 Child_A 和 Child_B 建立多對多關系。
然后不要將 map ParentClass 作為實體。 您仍然可以在代碼中將其作為父級 class,但就數據庫而言,Clild_A 和 Child_B 是不相關的。
這在 TPH 中尤為重要,它具有嚴重的性能影響。 這樣,您的 inheritance 層次結構就沒有數據庫開銷。 唯一真正的缺點是您沒有對所有 ParentClass 實體的內置搜索。
唯一的變化是,如果你不想讓ParentClass參與數據庫中的M2M,你就不能有從TestB到ParentClass的導航屬性。 所以
public class TestB
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Child_A> ParentClasssA { get; set; }
public ICollection<Child_B> ParentClasssB { get; set; }
}
public abstract class ParentClass
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<TestB> TestBs { get; set; }
}
[Table("Child_A")]
public class Child_A : ParentClass
{
public string childAName { get; set; }
}
[Table("Child_B")]
public class Child_B : ParentClass
{
public string childbName { get; set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.