Есть ли способ отключить ленивую загрузку для конкретного запроса в 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();
}