更新:我應該注意到NavigationPropertyClass
上的Id
屬性不是數據庫生成的。在我的實際模型中,NavigationPropertyClass
也是層次結構方案(使用TPH)的一部分,此處未顯示,而NavigationPropertyClass
有DerivedClass1
實例和DerivedClass2
實例的集合,但並非所有類都必須從基類從NavigationPropertyClass
派生。實體框架6.1:派生類型和標識關係中的1-1和1-many關係
我的模型的一部分看起來像這樣(其他屬性和構造函數爲簡潔起見省略):
//Many other classes inherit from this class
//and many of the derived classes are not composed of DerivedClass1 or DerivedClass2
public abstract SomeOtherBaseClass{
public int Id {get; set;} //not database generated, set in the constructor
}
public NavigationPropertyClass: SomeOtherBaseClass{
public DerivedClass1 Derived1 {get; set;}
public virtual ICollection<DerivedClass2> Derived2Collection {get; set;}
}
public abstract class BaseClass{
public int Id {get; set;}
//other properties shared by derived classes
}
public class DerivedClass1: BaseClass{
public NavigationPropertyClass NavigationProperty {get; set;}
//other properties pertinent to DerivedClass1
}
public class DerivedClass2: BaseClass{
public NavigationPropertyClass NavigationProperty {get; set;}
//other properties pertinent to DerivedClass2
}
DerivedClass1
具有NavigationPropertyClass
1-1關係,同時DerivedClass2
具有許多-1與NavigationPropertyClass
的關係。
我試圖在每個派生類中設置標識關係,以便當NavigationPropertyClass
的實例從數據庫中刪除時,DerivedClass1
的相關實例以及DerivedClass2
的任何實例也將被刪除。我可以看到設置的唯一方法是使用TPT繼承,但即便如此,我也無法使事情正常工作。我會發布我的Fluent API配置,但我在這一點上嘗試了很多排列,我不知道應該發佈哪一個。
有沒有辦法做我想做的事情?如果是這樣,Fluent API配置是什麼樣的?
_ Derived2與NavigationPropertyClass_ =具有一對多的關係一個Derived2有很多NavigationPropertyClass? – 2014-09-03 15:06:21
@YuliamChandra編輯,以正確識別關係的方向。 – joelmdev 2014-09-03 15:39:24
EF不必知道'Base',你可以將派生類映射爲獨立的實體。 – 2014-09-03 20:18:42