有没有办法只在全局设置该值,而不必在每个查询上执行以下操作?模型视图中有一个延迟加载设置,但似乎没有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中标记了所有带有乱码序列后缀的对象并且使得使用调试器不合理。
答案 0 :(得分:22)
您可以在构造函数中禁用它,以便在您创建新上下文时随时禁用它:
public class LabEntities : DbContext
{
public LabEntities()
{
Configuration.ProxyCreationEnabled = false;
}
}
答案 1 :(得分:16)
如果您使用的是模型优先方法,意味着您有.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。重建项目并验证生成的上下文是否包含该行。