Я бы хотел спросить, почему такой запрос оценивается на стороне клиента:
_context
.Items
.Include(x => x.Status)
.Include(x => x.Orders)
.ThenInclude(x => x.User)
.Include(x => x.Orders)
.ThenInclude(x => x.OrderStatus)
.Where(x => x.Orders.Any())
.Where(x => x.Order != null)
.Where(x => x.Order.User.SomeProperty.ToLower() == user.SomeProperty.ToLower());
, где пользователь, используемый в user.SomeProperty.ToLower()
, является просто пользователем Identity и не равен нулю.
public class Item
{
public Guid Id = { get; protected set; }
public List<Order> Orders { get; set; } = new List<Order>();
public Order Order => Orders.FirstOrDefault(x => x.OrderStatus.Name = "Active");
public Status Status { get; set; }
}
public class Order
{
public Guid Id = { get; protected set; }
public User User = { get; set; }
public Status OrderStatus = { get; set; }
}
public class Status
{
public Guid Id = { get; protected set; }
public string Name = { get; set; }
}
В предупреждениях EF Core говорится, что проверка нуля является одной из причин, но я не могу понять, почему проверка нуля не может быть переведена
warn: Microsoft.EntityFrameworkCore.Query [20500]Выражение LINQ 'where (Property ([x] .Order, "Id")! = Null) "не может быть переведено и будет оценено локально.
warn: Microsoft.EntityFrameworkCore.Query [20500] TheВыражение LINQ 'where ([x] .Order.User.SomeProperty == __ user_SomeProperty_0)' не может быть переведено и будет оценено локально.