Я получаю исключение с DetachedLazyLoadingWarning:
Ошибка, сгенерированная для предупреждения «Microsoft.EntityFrameworkCore.Infrastructure.DetachedLazyLoadingWarning: была предпринята попытка лениво загрузить свойство навигации« Продукт »в отдельную сущность типа« DeliveryProxy ». Ленивая загрузка не поддерживается для отдельных объектов или объектов, которые загружены с помощью «AsNoTracking ()». Это исключение можно подавить или зарегистрировать, передав идентификатор события «CoreEventId.DetachedLazyLoadingWarning» методу «ConfigureWarnings» в «DbContext.OnConfiguring» или «AddDbContext».
при попытке запроса базы данных SQL с помощью Entity Framework Code 2.1
Это мой запрос:
var orders =
_context
.Set<Order>()
.Where(v => v.CompanyId == companyId)
.Include(v => v.Details)
.ThenInclude(d => d.Delivery)
.ThenInclude(v => v.Product)
.OrderByDescending(v=> v.Details.FirstOrDefault().Delivery.Product.ProductId)
.ThenByDescending(v=> v.Details.FirstOrDefault().Delivery.Value)
.ThenByDescending(v => v.CreatedAt)
.Page(request.Page, request.RowsPerPage);
Вот сущности и отношения:
public class Order : IEntity<int>
{
public int CompanyId { get; set; }
public virtual ICollection<OrderDetails> Details { get; set; }
[Required]
public DateTimeOffset CreatedAt { get; set; }
[Key]
public int Id { get; set; }
}
public class OrderDetails : IEntity<int>
{
public int OrderId { get; set; }
public int DeliveryId { get; set; }
[ForeignKey(nameof(OrderId))]
public virtual Order Order { get; set; }
[ForeignKey(nameof(DeliveryId))]
public virtual Delivery Delivery { get; set; }
[Key]
public int Id { get; set; }
}
public class Delivery : IEntity<int>
{
[Required]
public int ProductId { get; set; }
public int Value { get; set; }
[ForeignKey(nameof(ProductId))]
public virtual Product Product { get; set; }
[Key]
public int Id { get; set; }
}
[Table("Products")]
public class Product : IEntity<int>
{
[Required]
public byte ProductCategoryId { get; set; }
public virtual ICollection<Delivery> Deliveries { get; set; }
[Key]
public int Id { get; set; }
}
Похоже, Details.FirstOrDefault () отсоединяет сущность Delivery. То же самое решение работало с Entity Framework 6. Как я могу улучшить свой запрос, чтобы получить дату из базы данных, используя только один запрос (подавление спаривания не помогло)?