如果 ef4 正在生成您的所有查询,则 EF4 目前没有内置方法。
有一些方法可以解决这个问题,例如使用存储过程或更扩展的内联查询模型,但是,至少可以说这可能很耗时。
我相信(我不代表微软)缓存是微软为减轻 EF4 站点中的服务器负载而设计的解决方案。当同时运行 2 个上下文时,已读取内置于框架中的未提交(或未锁定)将为 EF4 的预期行为产生不可预知的问题。这并不意味着您的情况需要这种级别的并发性。
听起来您被要求对所有选择进行 nolock 。虽然我同意之前的海报,如果您有任何需要成为交易的交易,这可能会很危险,但我不同意这会自动使 DBA 成为木偶。您可能只是在运行一个非常适合脏读的 CMS。您可以更改整个数据库的隔离级别,这可以产生相同的效果。
DBA 可能已经为仅选择的操作推荐了 nolock(这很好,特别是如果有一个 ORM 被误用并进行一些狡猾的数据转储)。关于那个布偶评论最有趣的是 Stack Overflow 本身以 READ UNCOMMITTED 模式运行 SQL Server。猜猜你需要找到其他地方来为你的问题找到答案吗?
与您的 DBA 讨论在数据库级别设置它的可能性,或者如果您只在几个地方需要它,请考虑缓存策略。毕竟网络是无状态的,所以除非你直接解决它,否则并发通常可能是一种错觉。
有关隔离级别的信息