Permanently disable Configuration.ProxyCreationEnabled in EF?

c# configuration entity entity-framework proxy


Instead of having to do the following on every query, is there a way to just set that value globally? There is a lazyloading setting in the model view, but there does not seem to be a setting for the ProxyCreation.

        using (var context = new LabEntities())
            **context.Configuration.ProxyCreationEnabled = false;**

            var Query = from s in context.EAssets
                        where (s.Type.Definition.b_IsScannable == true) &&
                        (s.Server.s_Domain == Environment.UserDomainName || s.Server.s_Domain == null)
                        select s;
           var Entities = Query.ToList();

I don’t fully understand the benefits of this option, but i know that in visual studio is tags all my objects with gibberish serial suffixes and makes using the debugger unreasonable.

6/10/2014 11:39:11 PM

Accepted Answer

You can disable it in the constructor, so that it gets disabled anytime you create a new context:

public class LabEntities : DbContext
   public LabEntities()
      Configuration.ProxyCreationEnabled = false;
10/13/2012 1:16:09 AM

Popular Answer

If you're using a model-first approach, meaning you have a .edmx file, the way to permanently disable this option is to modify the file. This file is a code generation template that the build process uses to generate your DbContext-derived class.

Open this file and locate the constructor:

public <#=Code.Escape(container)#>()
        : base("name=<#=container.Name#>")
        //add the following line of code

        this.Configuration.ProxyCreationEnabled = false;

then add the line of code to set this property to false. Rebuild your project and verify the generated context contains the line.

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow