简体   繁体   English

LINQ 表达式中的 OData $top 查询无法转换,将使用 EF Core 和 .NET Core 2.2 在本地进行评估

[英]OData $top query in LINQ expression could not be transalted and will be evaluated locally using EF Core and .NET Core 2.2

I have an OData endpoint in my .NET Core API:我的 .NET Core API 中有一个 OData 端点:

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

It generates an SQL without LIMIT statement (postgres db) and this warning appears:它生成一个没有LIMIT语句(postgres db)的 SQL 并出现此警告:

The LINQ expression 'Take(__TypedProperty_1)' could not be translated and will be evaluated locally. LINQ 表达式“Take(__TypedProperty_1)”无法翻译,将在本地进行评估。

How can I make this query to DB to include the OData $top ?如何对 DB 进行此查询以包含 OData $top It is always getting the whole table records first.它总是首先获取整个表记录。

I had a wrong object mapping configuration that caused that problem.我有一个错误的 object 映射配置导致该问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM