0

我有 3000 位父母需要大规模更新。首先,我认为我会使用 SQL Server 进行大规模更新并为其提供一个数组,但事实证明该数组太长,并且我收到错误,即我为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();
    }
4

1 回答 1

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();
于 2012-11-19T17:42:35.557 回答