0

一括更新する必要がある 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();
    }
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 に答える