0

假设我在反映表格数据的页面上有一个 CheckBoxList。用户取消选中先前选中的项目,并选中未选中的项目。我想用 LINQ2EF 更新数据库,以便剩余的记录与新提交的检查项目匹配。

换句话说,当页面提交时,我得到一个String[]已检查的 ID。然后我需要将数据库更新为:

  1. 删除存在但现在没有 ID 的记录
  2. 添加不存在但现在已检查 ID 的记录
  3. 留下那些在那里的记录,并且仍然检查,独自一人。

使问题更加复杂的是,提交的 Id 位于字符串数组中,但数据对象的 Id 为 int。

4

1 回答 1

0

嗯,你写代码。

var submittedAsInts = submittedAsString.Select(s => int.Parse(s));
var toAdd = submittedAsInts.Where(i => !existingEntity.SomeProperty.Any(p => p.Id == i));
var toDelete = existingEntity.SomeProperty.Where(p => !submittedAsInts.Contains(p.Id));
foreach (var delId in toDelete)
{
    var o = existingEntity.SomeProperty.Single(p => p.Id == delID);
    existingEntity.SomeProperty.Remove(o);
    Context.DeleteObject(o);
}
// similarly for insert.
于 2010-10-20T21:35:09.550 回答