实体框架和脏读

时间:2011-01-11 13:56:30

标签: sql-server entity-framework entity-framework-4

我有针对SQL Server 2008的实体框架(.NET 4.0)。数据库(理论上)在工作时间内更新 - 删除,然后插入,全部通过事务。实际上,它不会经常发生。但是,我需要确保我始终可以读取数据库中的数据。我正在编写的应用程序永远不会对数据进行任何类型的写入 - 只读。

如果我进行脏读,我总能访问数据;发生的最糟糕的事情是我得到旧数据(这是可以接受的)。但是,我可以告诉Entity Framework始终使用脏读吗?如果我以这种方式设置EF,是否需要担心性能或数据完整性问题?或者我应该退一步看看重写正在执行删除/插入过程的过程吗?

3 个答案:

答案 0 :(得分:8)

TransactionScope是你的朋友: Entity Framework with NOLOCK

答案 1 :(得分:5)

不要使用脏读。 “最糟糕的”并不是你看到的旧数据。最糟糕的是你看到未提交的数据。 Stack Overflow uses snapshots rather than dirty reads解决这个问题。这就是我要做的事。

答案 2 :(得分:1)

从上一个链接中,我发现了这个,这也回答了这个问题。

http://www.hanselman.com/blog/GettingLINQToSQLAndLINQToEntitiesToUseNOLOCK.aspx