有没有人对.SaveChanges()方法的使用有一些很好的信息?
尝试在数据上下文对象上使用.SaveChanges()方法时遇到各种问题。我从现有数据源获取数据,创建适当的EntityFramework / DataService对象,用数据填充这些创建的对象,将这些对象添加到上下文中,然后通过调用.SaveChanges保存该数据。
我提出的场景(以及与它们相关的问题)就是这样......在每个场景中我都有一个foreach循环,它从DataTable中的行获取数据并生成对象,将它们附加到他们去的背景。 (注意:三个对象是“成员”和两个通过SetLink调用连接的“地址”) - 基本上这是一个转换工具,用于从一个数据存储中获取数据并将其按压到数据服务公开的数据存储中。
在执行像这样的大数据加载时,从客户端对象调用.SaveChanges()的首选方法是什么?有什么我不知道如何.SaveChanges()的工作原理?任何人都可以提供有关如何使用此功能以及通过数据服务保存数据的限制(如果有)的更多详细信息?围绕.SaveChanges()方法调用是否有任何最佳实践?是否有关于.SaveChanges()方法调用的特别好的文档?
答案 0 :(得分:4)
我没有使用EntityFramework的经验(只是一些随机实验),你是否尝试过每n次迭代调用.SaveChanges()?
我的意思是这样的:
int i = 0;
foreach (var item in collection)
{
// do something with your data
if ((i++ % 10) == 0)
context.SaveChanges();
}
context.SaveChanges();
我知道这很难看,但这是我想出的第一个可能的解决方案。
答案 1 :(得分:0)
我在一个小项目上使用EntityFramework,所以我对这个问题也非常感兴趣。 两个快速问题: 您是否尝试过缓存数据对象中的数据对象? 您是否尝试关闭datacontext并在循环期间创建一个新的以释放内存?
此致
午