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;
最初我是想查询现有的儿童和他们每个人的比较新集,但它似乎是过于复杂。
什么是更新成员及其所有孩子的最佳方式?