簡體   English   中英

如何通過ef刪除asp.net中的子記錄

[英]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 ,因為標記為DeletedRemoveRange將從集合中刪除每個對象。

並且將表單標記為Modified是沒有必要的,因為它是一個被跟蹤的實體,它將知道當前狀態的任何變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM