EF Core 3.1.x:无法翻译LINQ表达式。以一种可以翻译的形式重写查询

时间:2020-05-20 08:48:13

标签: entity-framework-core-3.1

EF Core 3.1.x:

我不想将所有产品加载到内存中,以下查询可以做到! 猜猜如果我桌上有数百万种产品会发生什么?

var products = context.Products.ToList();
products = products.Where(p => p.Name.Contains("xxx")).ToList();

以下查询引发 LINQ表达式'DbSet-Product- .Where(b => b.Name.Contains( 值:“ xxx”, comparisonType:InvariantCultureIgnoreCase))'无法翻译。可以以可翻译的形式重写查询,也可以通过插入对AsEnumerable(),AsAsyncEnumerable(),ToList()或ToListAsync()的调用来显式切换到客户端评估。

var products = context.Products.Where(p => p.Name.Contains("xxx", StringComparison.InvariantCultureIgnoreCase)).ToList();

有关github的相关问题:#19087

谁能帮助我。如何使用ef core 3.1.x通过服务器端评估过滤数据?

1 个答案:

答案 0 :(得分:1)

EF Core会转换“包含”以进行服务器端评估,但不会接受接受StringComparison.InvariantCultureIgnoreCase(或任何其他StringComparison)的重载。

Closed issue here