我已經使用實體框架5.0代碼第一種方法爲子模型定義級聯刪除。 現在,當對父表記錄執行刪除操作時,相應的子表記錄不會被刪除。子表具有父表的外鍵引用。 在下面,我附上我的機型代碼:級聯刪除EF5.0代碼第一種方法父表不能正確刪除?
//"Product" parent class
public class Product
{
[Key, Column(Order = 0)]
[Required]
[MaxLength(50)]
public string Upc { get; set; }
public double Height { get; set; }
public double Width { get; set; }
public virtual List<ProductImages> ProductImages { get; set; }
public Product()
{
this.ProductImages = new List<ProductImages>();
}
}
//"ProductImages" child class
public class ProductImages
{
[Key, Column(Order = 0)]
public string Upc { get; set; }
[ForeignKey("Upc")]
public virtual Product Product { get; set; }
[Key, Column(Order = 1)]
public short Orientation { get; set; }
}
//Cascade delete constraint
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Product>()
.HasMany(t => t.ProductImages)
.WithRequired()
.HasForeignKey(d => d.Upc)
.WillCascadeOnDelete(true);
}
雖然刪除記錄,我發現了以下錯誤在
context.SaveChanges();
錯誤
操作失敗:該關係無法更改,因爲外鍵屬性的一個或多個 不可空。當對onship進行更改時,相關的外鍵屬性將設置爲空值。如果外鍵不支持空值,則必須定義新關係,必須爲外鍵 指定另一個非空值,或者必須刪除不相關對象 。
任何人都可以幫我一下如何刪除父表記錄和子表記錄嗎?
謝謝, Sampath。
你可以顯示代碼如何刪除父項? (點擊您的問題下面的「編輯」鏈接) – Slauma