我需要3000名父母进行批量更新。首先,我想我会使用SQL服务器进行批量更新并将其提供给一个数组,但是数组证明太长了,我得到的错误是我为WHERE IN ()
子句提供的字符串将被截断。
所以我回到了EF,但无论我做什么,都没有保存更改。
当我检查本地时,我看到了对象中的更改,但是当db.SaveChages()
完成时,更改不在数据库中。
我在这里一无所知。
public void UpdateParentStatus(List<int> primaryParentIds)
{
//string queryArray = string.Join(",", primaryParentIds);
//db.Database.ExecuteSqlCommand("UPDATE Parent SET IsPrimary = 1 WHERE ParentId IN ({0})", queryArray);
foreach (int id in primaryParentIds)
{
var parentResult = pList.Single(p => p.ParentId == id);
parentResult.IsPrimary = true;
}
db.SaveChanges();
}
答案 0 :(得分:0)
试试这个:
foreach (int id in primaryParentIds)
{
var parentResult = pList.Single(p => p.ParentId == id);
parentResult.IsPrimary = true;
pList.Entry(parentResult).EntityState = EntityState.Modified;
}
db.SaveChanges();