[英]How to delete children records in asp.net via ef
我必須在我的項目中使用對象,每個對象代表db中的一個表。 一個名稱是“form”,另一個名稱是“forminput”,一個表單對象有許多forminput對象。
下面是我的代碼:
form form = db.forms.find(id);
form.name = "new name";
form.forminputs.clear();
foreach( forminput input in inputs)
{
form.forminputs.add(input);
}
db.Entry(form).state = EntityState.Modified;
db.SaveChanges();
我想要的是刪除所有子forminput對象,並創建一堆新的forminput對象,並在一個調用SaveChanges方法中保存在db中。
但是系統告訴我不能修改關系,因為一個或多個鍵不能為空。
誰能幫我 ? 謝謝。
您還需要刪除每個對象,而不僅僅是關系。
foreach (var input in form.forminputs.ToArray())
{
db.Entry(input).State = EntityState.Deleted;
}
// form.forminputs.Clear();
要么
form.Set<forminput>().RemoveRange(form.forminputs);
// form.forminputs.Clear();
PS
不需要Clear
,因為標記為Deleted
或RemoveRange
將從集合中刪除每個對象。
並且將表單標記為Modified
是沒有必要的,因為它是一個被跟蹤的實體,它將知道當前狀態的任何變化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.