我使用EF4.1代碼第一和TPT(Table per Type)繼承。我有這樣的結構代碼第一TPT和級聯刪除
public class Customer
{
public virtual ICollection<Product> Products {get; set;}
}
public class Product
{
[Required]
public int Id { get; set; }
[Required]
public virtual Customer {get; set;}
public decimal Price { get; set; }
}
public class SpecializedProduct : Product
{
public string SpecialAttribute { get; set; }
}
當我刪除一個客戶時,我希望所有與該客戶相關的產品都被刪除。我可以指定客戶與產品之間的WillCascadeOnDelete(真):
modelBuilder.Entity<Customer>().HasMany(e => e.Products).WithRequired(p => p.Customer).WillCascadeOnDelete(true);
但因爲有SpecializedProduct和產品之間,我得到異常的foreighn鍵關係,當我試圖刪除客戶:
DELETE語句與REFERENCE約束「SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct」衝突。衝突發生在數據庫「Test」中,表「dbo.SpecializedProduct」,列'Id'。該語句已終止。
如果我手動設置上刪除級聯的SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct約束它的工作原理,但我想可以指定該使用模型構建器或在代碼中的一些其他方式。這可能嗎?
在此先感謝!
此致
西蒙
它用了13個月,但我得到了我的答案:-)謝謝!正如我記得我結束了執行一些SQL來手動定義模型創建級聯刪除。 –