将 EF Core 从 3.0 升级至 3.1 后发现一个问题,原先使用 Table Splitting 的地方竟然生成了让人啼笑生非的 JOIN 同一张表的 SQL 语句:
SELECT TOP(1) [b].[Title]
FROM [blog_Config] AS [b]
INNER JOIN [blog_Config] AS [b0] ON [b].[BlogID] = [b0].[BlogID]
WHERE ([b].[UseEditor] IS NOT NULL AND ([b].[BlogID] = @__blogId_0)
请问如何避开这个坑?
不要使用 Table Splitting,3.0 之后会导致生成的查询出现各种不必要的 Join。
在数据库里创建表别名,然后在 EF 里为这两个实体配置不同的表,“骗过” EF。
或者试试再建一个不同的 DbContext。