你不应该下载源代码并修改它来实现这么简单的事情。而现在,你就不必这样做了。
我们已经向GitHub推送了一个对EFContextProvider的简单更新。这个变化将出现在下一个Breeze Runtime版本中(>0.81.2)。
在以前,EFContextProvider是按照以下方式创建'T'(即您的ObjectContext/DbContext):
_context = new T();
现在,它调用一个虚方法T CreateContext(),其默认实现如下:
protected virtual T CreateContext() {
return new T();
}
在您的EFContextProvider子类中覆盖和替换它,您就可以像您喜欢的那样制作类型为'T'的上下文了。
注意:基本的EFContextProvider仍然会进行一些后期创建配置,以确保它的行为符合我们的预期;我们不希望上下文进行任何延迟加载或创建代理。
因此,如果'T'是一个ObjectContext,提供程序将执行以下操作:
objCtx.ContextOptions.LazyLoadingEnabled = false;
如果'T'是一个DbContext,它将执行以下操作:
dbCtx.Configuration.ProxyCreationEnabled = false;
dbCtx.Configuration.LazyLoadingEnabled = false;