我有一个包含超过50万条记录的表。每个记录包含约60个字段,但我们只对其中三个进行更改。实体框架4 SaveChanges上的内存不足
我们根据计算和查找对每个实体进行了小的修改。
很明显,我无法依次更新每个实体,然后SaveChanges
,因为这将花费太长时间。
因此,在整个过程结束时,我拨打Context
拨打SaveChanges
。
这当我申请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();
}
在这种情况下我应该寻找什么?
你说:“很明显,我无法轮流更新每个实体,然后SaveChanges会花费太长时间。”是否可以为'SaveChanges()'调用一些任意数量的记录(可能是1024或4096)? – 2013-04-11 05:57:41
你看了下面的帖子,因此[http://stackoverflow.com/questions/5940225/fastest-way-of-inserting-in-entity-framework/5942176#5942176](http://stackoverflow.com//5942176#5942176)5940225 /插入式实体框架最快的方式 - 的 - 问题/? – 2013-04-11 05:59:29
@David是的,我试过了,这似乎工作正常,但我不确定这是最好的*技术*解决方案。明白我的意思了吗? – griegs 2013-04-11 05:59:57