Sql server 实体框架和脏读

Sql server 实体框架和脏读,sql-server,entity-framework,entity-framework-4,Sql Server,Entity Framework,Entity Framework 4,我的实体框架(.NET4.0)与SQLServer2008相抵触。数据库(理论上)在工作时间内得到更新——删除,然后插入,所有这些都是通过事务进行的。实际上,这不会经常发生。但是,我需要确保我能够始终读取数据库中的数据。我正在编写的应用程序永远不会对数据执行任何类型的写入操作——只读 如果我进行脏读,我总是可以访问数据;最糟糕的情况是我得到了旧数据(这是可以接受的)。然而,我能告诉实体框架总是使用脏读吗?如果我这样设置EF,是否需要担心性能或数据完整性问题?或者我应该后退一步,看看如何重写执行删

我的实体框架(.NET4.0)与SQLServer2008相抵触。数据库(理论上)在工作时间内得到更新——删除,然后插入,所有这些都是通过事务进行的。实际上,这不会经常发生。但是,我需要确保我能够始终读取数据库中的数据。我正在编写的应用程序永远不会对数据执行任何类型的写入操作——只读


如果我进行脏读,我总是可以访问数据;最糟糕的情况是我得到了旧数据(这是可以接受的)。然而,我能告诉实体框架总是使用脏读吗?如果我这样设置EF,是否需要担心性能或数据完整性问题?或者我应该后退一步,看看如何重写执行删除/插入过程的过程吗?

TransactionScope是您的朋友:
不要使用脏读。“最糟糕的”不是你看到的旧数据。最糟糕的是,您会看到未提交的数据。解决这个问题。这也是我要做的。

从上一个链接中,我找到了这个,它也回答了这个问题


是的,但是如果您正在读取历史数据呢?如果您确定正在读取的数据不是最新的,例如正在运行的报告,
readuncommitted
对于该任务来说不是完全可以接受的吗?如果您正在读取历史数据,那么您也不需要脏读,因为不希望任何内容未提交。如果您认为出于某种原因需要脏读,而不是需要未提交的数据本身(例如锁定或优化),那么您应该修复而不是解决实际问题。如果有多人试图访问相同的历史数据,我担心引擎会锁定行。在这种情况下,这是我应该担心的问题吗?同样,我认为快照隔离可以解决您的问题,而无需脏读。我已经在系统上启用了RCSI,但我始终担心停机时间过长。感谢您在原帖子发布7年后的投入:)