c# - 在实体值更新期间读取值?

标签 c# entity-framework

我觉得这一定在某个地方得到了回答,我只是没有正确查询,所以我会提前道歉。

我有一个方法可以从服务中获取数百个对象,并使用代码优先方法将它们映射到数据库。现在我正在将所有对象一个一个地添加到上下文中,然后在最后保存一次。只有 100 时,填充大约需要 22 秒。所以,真的,我想我现在有两个问题......

  1. 如果要更新上下文并且有人试图访问该数据(即:从这些表中填充内容的页面。),它会无法访问吗?或者它只是以只读方式获取数据?我不必担心更新冲突,只担心读取概率,所以我假设后者但想检查一下。

  2. 是一次性填充和保存所有对象,还是在添加每个对象后保存更好?

谢谢。

最佳答案

消费者获取数据的方式取决于他们访问数据库所使用的锁定机制。他们可以选择等待所有对象更新的默认值,或者他们可以选择以只读方式获取某些内容。

决定是一次全部更新还是一点一点地更新取决于您持有锁的时间与您希望浪费多少时间来建立新连接之间的权衡。 的猜测是 22 秒的数据库写入时间太多了,因此您可能希望拆分该工作负载。

然而,另一方面,100 个对象 22 秒听起来很长,因此您可能会遇到一些性能问题来减慢速度。

关于c# - 在实体值更新期间读取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839027/

相关文章:

c# - 无法在 Android 模拟器 xamarin 上发布 Hello World 应用程序

c# - System.InvalidOperationException : 'Unable to resolve service for type ' Microsoft. AspNetCore.Hosting.IHostingEnvironment'

c# - EF SaveChanges 优化?

c# - 我应该使用什么来访问性能敏感的数据?

entity-framework - 使用 ADO.NET Entity Framework 拦截实体保存

c# - 外键组件 'X' 不是类型 'Y' 的声明属性。验证它没有被明确排除

c# - 如何指定 "collection of nullable types"的约束?

c# - RabbitMQ EventBasicConsumer 不工作

c# - C#中如何执行sql select语句

entity-framework - 如何在 EF4 中获取实体的第一个 EntityKey 名称