有没有人对使用.SaveChanges()方法有一些很好的信息?在ADO.Net数据服务中使用.SaveChanges()方法的最佳方法是什么?
当我尝试在我的数据上下文对象上使用.SaveChanges()方法时,遇到各种问题。我从现有数据源获取数据,创建适当的EntityFramework/DataService对象,用数据填充这些创建的对象,将这些对象添加到上下文中,然后通过调用.SaveChanges保存该数据。
我提出的场景(以及与它们相关的问题)就像这样......在每个场景中,我都有一个foreach循环,它从DataTable中的行中获取数据并生成对象,并将它们连接起来就上下文而言。 (注意:三个对象是通过SetLink调用附加的“成员”和两个“地址”) - 基本上,这是一种转换工具,用于从一个数据存储中获取数据并将其按照Data Services公开的数据存储进行处理。
- 呼叫.SaveChanges()不带任何参数,一旦在foreach循环(即外循环)
- 约的方式1/3内存不足错误(30,000出90000保存)结束 - 不知道这是如何发生的,因为每个保存项目都是对数据库的单独SQL调用,那么有什么内存不足?
- 呼叫.SaveChanges()不带任何参数每一次循环
- 这工作,但永远是绝对需要(8小时90,000保存)
- 呼叫.SaveChanges(SaveChangesOption.Batch)一次在foreach循环
- 同OutOfMemory错误的结束,但没有任何保存到数据库中
个
- 呼叫.SaveChanges(SaveChangesOption.Batch)每一次循环
- 404未找到错误
- 呼叫.SaveChanges(SaveChangesOption.Batch)每一次循环10
- 400错误请求错误(偶尔)
- 经过多次调整后的OutOfMemory
- 大量随机尝试在每个循环中创建一次上下文,或在循环开始时将其作为变量使用,或将其作为可用的私有成员变量。
- 不同的结果,无法量化,没有真的那么好
什么是做这样一个大的数据负载时,从客户端访问对象.SaveChanges()的首选方法是什么?有没有什么我没有得到如何.SaveChanges()的作品?任何人都可以提供关于一次应该如何使用该功能的更多细节,以及通过数据服务保存数据的限制(如果有的话)是什么?有没有关于.SaveChanges()方法调用的最佳实践? .SaveChanges()方法调用有特别好的文档吗?
你正在实施什么“变化”?为什么90,000节省?也许你应该尝试SQL复制,如果你只是传递数据?只是一个想法。 – D3vtr0n 2008-11-28 05:16:53
只是为了澄清,当你说“每循环一次”,你的意思是每个循环*迭代*一次调用? – Veverke 2015-10-12 12:22:04