内存不足异常:添加一个范围
本文关键字:一个 范围 异常 添加 内存不足 | 更新日期: 2023-09-27 18:13:31
下面的代码在导入数据库时返回OutOfMemoryException
,我需要导入40000个不同的概念,我的计算机可以容纳这么多,但是我认为一次可以添加多少是有限制的。
我想做的是让它每次添加1000个保存更改然后重复这个过程,直到它遍历整个数据库…
怎么做呢?
public static void writeOutConcepts(List<Gnome.Data.Concept> concepts, HttpResponseBase Response)
{
var ctx = new GnomeContext();
Response.Write("Writing out concepts: 'n");
Response.Flush();
try
{
ctx.Concepts.AddRange(concepts);
}
catch (Exception error)
{
Response.Write(error.Message);
Response.Write(error.StackTrace);
Response.Flush();
throw;
}
Response.Write("Writing of Concepts complete'n'n");
ctx.SaveChanges();
}
我不确定,什么影响将使用事务,但你可以试试这个:
using (var transaction = ctx.Database.BeginTransaction())
{
int i = 0;
foreach(var concept in concepts)
{
ctx.Concepts.Add(concept);
i++;
if (i >= 1000)
{
i = 0;
ctx.SaveChanges();
}
}
ctx.SaveChanges()
transaction.Commit();
}