【问题标题】:OData $top query in LINQ expression could not be transalted and will be evaluated locally using EF Core and .NET Core 2.2无法转换 LINQ 表达式中的 OData $top 查询,将使用 EF Core 和 .NET Core 2.2 在本地进行评估
【发布时间】:2019-10-16 09:35:34
【问题描述】:

我的 .NET Core API 中有一个 OData 端点:

[EnableQuery]
[ODataRoute]
[HttpGet]
public IQueryable<MerchantDto> GetAll()
{
    return _context
        .Merchants
        .Where(x => !x.IsDeleted)
        .ProjectTo<MerchantDto>(_mapper.ConfigurationProvider);
}

它生成一个没有LIMIT 语句(postgres db)的 SQL 并出现此警告:

无法翻译 LINQ 表达式“Take(__TypedProperty_1)” 并将在本地进行评估。

如何对 DB 进行此查询以包含 OData $top?它总是首先获取整个表记录。

【问题讨论】:

    标签: c# entity-framework linq .net-core odata


    【解决方案1】:

    我有一个错误的对象映射配置导致了这个问题。

    【讨论】:

      猜你喜欢
      • 2017-12-27
      • 2021-02-22
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多