2
兒童更新我有一個動作如何處理在EF
[HttpPost]
public string Edit(Member member)
和會員有孩子實體ICollection<AgeBracket> AgeBrackets
的集合。
目前我確實檢索與該成員相關的所有A geBrackets
,將所有人標記爲已刪除,然後遍歷新收藏併爲每個收藏創建一個新條目。然後我更新我的父實體。它的工作原理,但應該有一個更好的方式來做到這一點:
例如,如果我會寫SQL
,我可以只用一行
DELETE FROM AgeBrackets WHERE MemberId = @MemberId
在我的情況下刪除所有現有的兒童它使選擇檢索現有項目,然後爲每個項目生成刪除,然後爲每個新的子項生成插入,然後爲父項生成更新。
這裏是我的代碼現在的樣子:
IList<AgeBracket> ageBrackets = db.AgeBrackets.Where<AgeBracket>(x => x.MemberId == member.MemberId).ToList();
foreach (AgeBracket ab in ageBrackets)
db.Entry(ab).State = EntityState.Deleted;
if (member.AgeBrackets != null)
foreach (AgeBracket ab in member.AgeBrackets)
{
ab.MemberId = member.MemberId;
db.AgeBrackets.Add(ab);
}
db.Entry(member).State = EntityState.Modified;
最初我是想查詢現有的兒童和他們每個人的比較新集,但它似乎是過於複雜。
什麼是更新成員及其所有孩子的最佳方式?