假设我在反映表格数据的页面上有一个 CheckBoxList。用户取消选中先前选中的项目,并选中未选中的项目。我想用 LINQ2EF 更新数据库,以便剩余的记录与新提交的检查项目匹配。
换句话说,当页面提交时,我得到一个String[]
已检查的 ID。然后我需要将数据库更新为:
- 删除存在但现在没有 ID 的记录
- 添加不存在但现在已检查 ID 的记录
- 留下那些在那里的记录,并且仍然检查,独自一人。
使问题更加复杂的是,提交的 Id 位于字符串数组中,但数据对象的 Id 为 int。
假设我在反映表格数据的页面上有一个 CheckBoxList。用户取消选中先前选中的项目,并选中未选中的项目。我想用 LINQ2EF 更新数据库,以便剩余的记录与新提交的检查项目匹配。
换句话说,当页面提交时,我得到一个String[]
已检查的 ID。然后我需要将数据库更新为:
使问题更加复杂的是,提交的 Id 位于字符串数组中,但数据对象的 Id 为 int。
嗯,你写代码。
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.