Есть ли способ отключить ленивую загрузку для конкретного запроса в Entity Framework 6? Я хочу использовать его регулярно, но иногда я хочу его отключить. Я использую виртуальные свойства для их ленивой загрузки.
Entity Framework: как отключить ленивую загрузку для конкретного запроса?
Ответ 1
установите следующий код перед запросом, который вы хотите выполнить
context.Configuration.LazyLoadingEnabled = false;
Ответ 2
Вы можете отключить Lazy загрузку для конкретного запроса следующим образом:
public static Cursos GetDatosCursoById(int cursoId)
{
using (var bd = new AcademyEntities())
{
try
{
bd.Configuration.ProxyCreationEnabled = false;
return bd.Cursos.FirstOrDefault(c => c.cursoId == cursoId);
}
catch (Exception ex)
{
return null;
}
}
}
Ответ 3
Возможно, мне что-то не хватает, но вместо того, чтобы менять конфигурацию каждый раз, может ли другой подход использовать .Include()
только в тех запросах, где вы хотите загружать?
Предположим, что у нас есть класс Product
, который имеет свойство навигации для класса Colour
, вы можете загрузить Colour
для Product
, как это, -
var product = _context.Products
.Where(p => p.Name == "Thingy")
.Include(x => x.Colours)
.ToList();
Ответ 4
Перейдите к свойствам диаграммы и найдите свойство, предназначенное для ленивой загрузки и отключите его.
Если вы сначала используете код, перейдите в свою область конфигурации и отключите его оттуда:
this.Configuration.LazyLoadingEnabled = false;
Ответ 5
Предположим, у вас есть это:
IOrderedQueryable<Private.Database.DailyItem> items;
using (var context = new Private.Database.PrivateDb())
{
context.Configuration.LazyLoadingEnabled = false;
items = context.DailyItem.OrderBy(c => c.sortOrder).OrderByDescending(c => c.isFavorite);
}
Вы все равно получите ленивую загрузку, несмотря на явную настройку не делать этого. Исправить несложно, замените его следующим образом:
List<Private.Database.DailyItem> items;
using (var context = new Private.Database.PrivateDb())
{
// context.Configuration.LazyLoadingEnabled = false;
items = context.DailyItem.OrderBy(c => c.sortOrder).OrderByDescending(c => c.isFavorite).ToList();
}