在ObjectContext对象上,我使用这样的代码来加载导航属性。
context.LoadProperty(entity, navigationProperty,
System.Data.Objects.MergeOption.AppendOnly);
我想对将通过此类调用生成的查询禁用计划缓存吗?
有可能吗?
是否可以使用DBContext包装上下文?
提前致谢。
答案 0 :(得分:1)
我使用DBContext解决了这个问题。
DbContext dbc = new DbContext(context, false);
dbc.Entry<T>(object).Reference<TReference>(@"ReferenceName").Query().DisablePlanCaching().Load();
dbc.Entry<T>(object).Collection<TCollection>(@"CollectionName").Query().DisablePlanCaching().Load();
使用DisablePlanCaching扩展方法(灵感来自找到的here):
public static IQueryable<T> DisablePlanCaching<T>(this IQueryable<T> query)
{
ObjectQuery<T> q = query as ObjectQuery<T>;
if ( q == null )
throw new InvalidOperationException(@"IQueryable<T> is not of type ObjectQuery<T>");
q.EnablePlanCaching = false;
return query;
}