【问题标题】:EF Core ignoring condition when extracted in methodEF Core在方法中提取时忽略条件
【发布时间】:2019-10-07 21:04:33
【问题描述】:

在从 IQueryable 中提取一个简单的 Linq2Entity 条件后

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 中,它仅在内存中应用。为什么会这样???

【问题讨论】:

    标签: entity-framework linq-to-entities


    【解决方案1】:

    我们必须使用这样的表达式:

    public Expression<Func<T, bool>> GetFilteredAddressExpression<T>() where T : IAddress
    {
        return x => x.AddressId != null && _validAddressIds.Contains(x.AddressId.Value);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 2021-12-26
      • 2018-10-22
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多