【发布时间】:2018-11-20 00:36:27
【问题描述】:
我正在将我的 MVC 3 应用程序/Linq-To-Sql 升级到 MVC 5 Entity Framework 6.1。我有一个项目列表(ID、名称等)。要更改列表,用户可以通过添加或删除表格行来添加或删除项目。使用表单集合我检查新项目并删除旧列表中存在的项目。使用以下内容:
//.....
List<int> idsToKeep = new List<int>();
for (int i = 0; i < visit.Students.Count; i++)
{
Students om = visit.Students.ElementAt(i);
if (om.StudentsId == 0)
continue;
bool itemExists = false;
int itemToDelete = 0;
foreach (int id in idsToKeep)
if (om.StudentsId == id)
{
itemExists = true;
}
else
{
itemToDelete = id;
}
if (!itemExists)
{
var entitySet = visit.Students.Where(x => x.StudentsId == 0 || idsToKeep.Contains(x.StudentsId)).ToList();
entitySet.RemoveAt(i);
// _studentRepository.RemoveStudentsType(itemToDelete);
// visit.Students.RemoveAt(i);
i--;
}
}
在 Linq-to-Sql 中,我使用了:
visit.Students.RemoveAt(i);
无法解析 RemoveAt,因为列表是 ICollection。所以我用了:
var entitySet = visit.Students.Where(x => x.StudentsId == 0 || idsToKeep.Contains(x.StudentsId)).ToList();
entitySet.RemoveAt(i);
程序一直在循环,但没有任何反应!非常感谢您的建议
【问题讨论】:
-
你忘了在 DbContext 对象上调用 SaveChanges 方法
标签: c# asp.net-mvc linq entity-framework