我想實體框架6代碼優先實施TPH繼承,並從我的繼承類型的關係有問題。實體框架繼承和關係
我的代碼是
public abstract class Base...
public class Inherited1 : Base
{
public virtual Type1 Rel { get; set; }
...
public class Inherited2 : Base
{
public virtual Type1 Rel {get;set;}
...
所以繼承類型具有 「相同」 的關係。繼承本身工作正常,但我遇到的問題是與表Type1的關係將被添加兩次(邏輯...),而另一個關係是從Inherited2.Id到Type1.Id而不是Inherited2.Type1Id Type1.Id第一個關係是(正確)。
我不確定我是否有意義地解釋了這一點,並用部分代碼示例改變了類型名稱,但我希望你明白了。如果您需要任何更多的細節,請詢問。
我大概可以用
UPDATE
我創建了一個示例GitHub庫來演示這個問題正確地實現這一點。隨時告訴我我做錯了什麼。 https://github.com/antsim/EntityFrameworkTester
你在用什麼?流利的API或註釋?在這兩種情況下,顯示一些你正在使用的代碼 – Monah
與這些關係相關的唯一流暢API是 modelBuilder.Entity() .HasMany(x => x.Inherited1) .WithRequired(x => x。 Type1) .WillCascadeOnDelete(); –
我在下面的答案中加入了TPT和TPH兩種情況供您參考 – Monah