2

そのため、プログラムの特定の部分で一度に多くのエントリを変更しています。現在のコードは、それぞれ次のようになります。

foreach(newentry)
{
    oldentry = context.Users.Find(entry.userid);
    newentry.oldvalue = newvalue;
    context.Entry(oldentry).CurrentValues.SetValues(newentry);
}
context.SaveChanges();

ただし、これによりデータベースに 300 回以上クエリを実行することになり、パフォーマンスが低下します。私が考えた唯一の方法は、データベースをプリロードすることですが、これも最善の方法ではないと思います。

var userlist = context.Users.ToList();
foreach(newentry in userlist)
{
    var original = entry;
    entry.originalvalue = newvalue;
    context.Entry(original).CurrentValues.SetValues(newentry);
}
context.SaveChanges();

私はまだデータベースに 300 回以上アクセスしていますね。あなたは何をお勧めします?

4

2 に答える 2