我有针对SQL Server 2008的实体框架(.NET 4.0)。数据库(理论上)在工作时间内更新 - 删除,然后插入,全部通过事务。实际上,它不会经常发生。但是,我需要确保我始终可以读取数据库中的数据。我正在编写的应用程序永远不会对数据进行任何类型的写入 - 只读。
如果我进行脏读,我总能访问数据;发生的最糟糕的事情是我得到旧数据(这是可以接受的)。但是,我可以告诉Entity Framework始终使用脏读吗?如果我以这种方式设置EF,是否需要担心性能或数据完整性问题?或者我应该退一步看看重写正在执行删除/插入过程的过程吗?
答案 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