全局禁用Entity框架中的动态代理

时间:2014-07-10 10:33:48

标签: c# entity-framework

请问如何禁用在Entity Framework 5中创建的所有实体的动态代理。

目前,我在espEntities.Configuration.ProxyCreationEnabled = false;的每个实例中设置此DbContext我是否可以将当前和未来模型作为一次性任务执行此操作。

由于

1 个答案:

答案 0 :(得分:26)

方法1

如果您有EDMX模型,则会创建一个分部类。使用它,在OnContextCreated中您可以停用ProxyCreationEnabled

public partial class MyModelContainer
{
    public void OnContextCreated()
    {
        this.Configuration.ContextOptions.ProxyCreationEnabled = false;
    }
}

方法2

编辑model.tt文件。找到包含以下内容的行:

partial class <#=code.Escape(container)#> : DbContext

并加入

this.Configuration.ProxyCreationEnabled = false;

方法3

如果您没有使用EDMX文件,请在您的上下文构造函数中执行:(假设您的上下文称为EspEntities)

public class EspEntities : DbContext
{
   public EspEntities()
   {
      Configuration.ProxyCreationEnabled = false;
   }
}