我建立一个应用程序,并正在使用实体框架6.但我到内存使用的问题上运行。无论我尝试什么,我迟早会遇到内存不足错误。到目前为止,我已经尝试了以下内容:实体框架6内存达到2GB
- 使用using作为上下文。
- 保存批次更改和处理上下文。
- 手动调用GC.Collect()。
但是,这些都没有阻止Entity框架使用更多的内存与我做的每个saveChanges。最终达到2GB的限制并导致我的程序崩溃。
有什么办法,我不知道的,使实体框架版本的所有记忆?
编辑
using (var sqlite = new myEntities())
{
sqlite.Configuration.AutoDetectChangesEnabled = false;
sqlite.Configuration.ValidateOnSaveEnabled = false;
foreach (var someItem in someList)
{
var newItem = new Item
{
...
};
sqlite.tableName.Add(newItem);
if (++countRecords%1000 == 0)
{
sqlite.SaveChanges();
}
}
sqlite.SaveChanges();
}
如上所述以上我还尝试设置上下文,而不使用和调用SaveChanges后设置它。
if (++countRecords%1000 == 0)
{
sqlite.SaveChanges();
sqlite.Dispose();
sqlite = new myEntities()
}
是否为每个数据库请求创建新的Context实例? – Lance
要获得帮助,您需要找出一种方法来创建一个能够再现内存问题的最小但完整的程序。否则,正如你可以理解的那样,我们建议的任何事情都将是纯粹的猜测。 – sstan
你能分享你的EF查询吗? – Sampath