4
实体框架4.0中是否有绕过单个LINQ查询的对象缓存的方法?如何绕过单个实体框架4.0查询上的缓存?
我希望能够执行查询并知道即使该对象已在请求中早些时候检索并已存储在缓存中,我也会从数据库中获取绝对最新的数据。
实体框架4.0中是否有绕过单个LINQ查询的对象缓存的方法?如何绕过单个实体框架4.0查询上的缓存?
我希望能够执行查询并知道即使该对象已在请求中早些时候检索并已存储在缓存中,我也会从数据库中获取绝对最新的数据。
您必须配置您的查询或对象集,以强制实现结果集的实现,而不是使用身份映射中的已实体化实体。
context.YourObjectSet.MergeOption = MergeOption.OverwriteChanges;
// now execute the query as many times as you want
或
var query = ...;
((ObjectQuery<YourEntity>)query).MergeOption = MergeOption.OverwriteChanges;
+1好知道。 MergeOption是一个有点意外的名字来强制执行缓存覆盖,但嗯,它的工作原理。我正在尝试使用RefreshMode.StoreWins进行ObjectContext.Refresh,并且很困惑,看到那个按钮没有按预期工作。 – 2012-02-28 12:45:16
它不适合我(EF6.0)。我找不到MergeOption属性。我想EF中有一些突破性的变化。这个答案很有用:http://stackoverflow.com/a/4911591/1131855 – 2014-05-23 08:43:11
@MaximEliseev:'MergeOption'是原始ObjectContext API的一个特性。您正在使用更新的API。 – 2014-05-23 09:48:33