EF Core 8:SQL 树中的表达式未分配类型映射

问题描述 投票:0回答:1

以下查询在 EF Core 7 中运行良好:

string[] values = new[] {"one", "two", "three", "four"};

var query = (from item in _context.items
             let value = values[item.value]
             select new {item.id, value}).ToList();

但是升级到 EF Core 8 后,抛出以下异常:

System.InvalidOperationException:SQL 树中的表达式 '' 未分配类型映射。

我检查了重大更改文档,我正在运行 SQL Server 2022,并将数据库的兼容性级别设置为

160

我在这里缺少什么?

c# entity-framework-core ef-core-8.0
1个回答
0
投票

我在这里缺少什么?

嗯,看起来像是回归。 EF Core 8 不应将此投影作为 SQL 处理,但它确实如此。

检测哪些内容应在客户端处理以及哪些内容可翻译是脆弱的算法,因此最好帮助 EF Core 正确完成:

string[] values = new[] {"one", "two", "three", "four"};

var query = (from item in _context.items
                .Select(x => new { x.Id, x.value }).ToList() // select only needed fields
             let value = values[item.value]
             select new {item.id, value}).ToList();

但是在 EF Core 存储库中创建有关该问题的问题,以便他们可以创建回归测试并修复此回归。

您还可以尝试通过删除

let
操作符来简化查询,这是额外的
Select

var query = (from item in _context.items
             select new {item.id, value = values[item.value]}).ToList();
© www.soinside.com 2019 - 2024. All rights reserved.