是否有人对.SaveChanges()方法的使用有很好的了解?
当试图在数据上下文对象上使用.SaveChanges()方法时,我遇到了各种各样的问题。我从现有数据源获取数据,创建适当的EntityFramework/DataService对象,用数据填充创建的对象,将这些对象添加到上下文中,然后通过调用.SaveChanges保存数据。
我想出的场景(以及与它们相关的问题)是这样的.在每个场景中,我都有一个foreach循环,它从DataTable中的行中获取数据并生成对象,并在对象运行时将它们附加到上下文中。(注意:三个对象,一个是“成员”,两个是通过SetLink调用附加的“地址”)-这基本上是一个转换工具,用于从一个数据存储中获取数据并将其按摩到由data公开的数据存储中。
在foreach循环结束时(即在循环之外),不使用任何参数的
不需要任何参数的
database
每个循环error
在许多(occassionally)
在执行这样的大数据加载时,从客户端对象调用.SaveChanges()的首选方法是什么?关于.SaveChanges()是如何工作的,我有什么不了解的吗?谁能提供更多关于如何使用此功能的详细信息,以及通过数据服务保存数据的限制(如果有的话)是什么?在.SaveChanges()方法调用方面有什么最佳实践吗?关于.SaveChanges()方法调用有什么特别好的文档吗?
发布于 2008-12-11 07:09:01
我在使用EntityFramework方面没有很大的经验(只是一些随机实验),您是否尝试过每n次迭代调用.SaveChanges()?
我的意思是这样的:
int i = 0;
foreach (var item in collection)
{
// do something with your data
if ((i++ % 10) == 0)
context.SaveChanges();
}
context.SaveChanges();
我知道这很难看,但这是我想出的第一个可行的解决办法。
发布于 2008-11-04 06:10:46
我也在一个小项目上使用EntityFramework,所以我对这个问题也很感兴趣。两个简单的问题:您是否尝试过在数据文本中转换数据对象的缓存?您是否试图关闭数据文本并在循环期间创建一个新的数据文本来释放内存?
问候
肯尼斯
https://stackoverflow.com/questions/190066
复制相似问题