行不保存EF中的更新

时间:2012-11-15 14:28:12

标签: c# asp.net-mvc entity-framework

我需要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();
    }

1 个答案:

答案 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();
相关问题