EF Core игнорирует условие при извлечении в методе - PullRequest
0 голосов
/ 21 мая 2019

После извлечения простого условия Linq2Entity в IQueryable из

orders = orders.Where(o => o.AddressId.HasValue && _validAddressIds.Contains(o.AddressId.Value));

к методу примерно так:

orders = orders.Where(o => IsValidAddress(o.AddressId));

...

private bool IsValidAddress(long addressId)
{
  return adressId.HasValue && _validAddressIds.Contains(addressId);
}

условие больше не содержится в сгенерированном SQL, оно применяется только в памяти. Почему это ???

1 Ответ

0 голосов
/ 22 мая 2019

Мы должны использовать такое выражение:

public Expression<Func<T, bool>> GetFilteredAddressExpression<T>() where T : IAddress
{
    return x => x.AddressId != null && _validAddressIds.Contains(x.AddressId.Value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...