Ответ 1
Вы можете отключить его в конструкторе, чтобы он отключился при создании нового контекста:
public class LabEntities : DbContext
{
public LabEntities()
{
Configuration.ProxyCreationEnabled = false;
}
}
Вместо того, чтобы делать следующее для каждого запроса, есть ли способ установить это значение глобально? В представлении модели есть параметр lazyloading, но для 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. Перестройте проект и убедитесь, что сгенерированный контекст содержит строку.