50 万を超えるレコードを含むテーブルがあります。各レコードには約 60 のフィールドが含まれていますが、そのうちの 3 つだけを変更します。
計算とルックアップに基づいて、各エンティティに小さな変更を加えます。
明らかに、各エンティティを順番に更新することはできません。そうするとSaveChanges
、時間がかかりすぎるためです。
そのため、プロセス全体の最後SaveChanges
にContext
.
これにより、適用時にメモリ不足エラーが発生しますSaveChanges
私は DataRepository パターンを使用しています。
//Update code
DataRepository<ExportOrderSKUData> repoExportOrders = new DataRepository<ExportOrderSKUData>();
foreach (ExportOrderSKUData grpDCItem in repoExportOrders.all())
{
..make changes to enity..
}
repoExportOrders.SaveChanges();
//Data repository snip
public DataRepository()
{
_context = new tomEntities();
_objectSet = _context.CreateObjectSet<T>();
}
public List<T> All()
{
return _objectSet.ToList<T>();
}
public void SaveChanges()
{
_context.SaveChanges();
}
この場合、何を探すべきですか?