永久禁用EF中的Configuration.ProxyCreationEnabled?

而不是必须在每个查询上执行以下操作,有没有办法只是全局设置该值? 模型视图中有一个延迟加载设置,但似乎没有ProxyCreation的设置。

using (var context = new LabEntities()) { **context.Configuration.ProxyCreationEnabled = false;** var Query = from s in context.EAssets .Include("Server").Include("Type").Include("Type.Definition") where (s.Type.Definition.b_IsScannable == true) && (s.Server.s_Domain == Environment.UserDomainName || s.Server.s_Domain == null) select s; var Entities = Query.ToList(); } 

我并不完全理解这个选项的好处,但是我知道在visual studio中标记了所有带有乱码序列后缀的对象,并且使得调试器使用不合理。

您可以在构造函数中禁用它,以便在您创建新上下文时随时禁用它:

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

如果您使用的是模型优先方法,意味着您有.edmx文件,则永久禁用此选项的方法是修改.Context.tt文件。 此文件是构建过程用于生成DbContext派生类的代码生成模板。

打开此文件并找到构造函数:

 public <#=Code.Escape(container)#>() : base("name=<#=container.Name#>") { <# WriteLazyLoadingEnabled(container); #> //add the following line of code this.Configuration.ProxyCreationEnabled = false; } 

然后添加代码行将此属性设置为false。 重建项目并validation生成的上下文是否包含该行。