Dim*_*ima 4 sql-server entity-framework ef-core-2.0
我使用实体框架核心 2.0.1。在我的 EF 查询中,我需要将几个简单的查询组合成一个 UNION 查询。所以,对于一个非常基本的例子,我有几个类似的查询
using (var dbc = new ItemsDbContext("some-connection-string"))
{
var q1 = dbc.Items.Where(a => a.ItemType == "A");
var q2 = dbc.Items.Where(a => a.ItemType == "B");
var myList = q1.Union(q2).ToList();
}
Run Code Online (Sandbox Code Playgroud)
我希望将这样的 SQL 语句作为单个查询对我的 SQL Server 数据库执行:
SELECT I.*
FROM [dbo].[Items]
WHERE I.ItemType = N'A'
UNION
SELECT I.*
FROM [dbo].[Items]
WHERE I.ItemType = N'B'
Run Code Online (Sandbox Code Playgroud)
但是,正如我在 SQL Server Profiler 中看到的那样,执行了两个单独的查询:
查询 1:
SELECT I.*
FROM [dbo].[Items]
WHERE I.ItemType = N'A'
Run Code Online (Sandbox Code Playgroud)
查询 2:
SELECT I.*
FROM [dbo].[Items]
WHERE I.ItemType = N'B'
Run Code Online (Sandbox Code Playgroud)
这两个单独查询的结果稍后由实体框架联合。但它是在调用代码中完成的,而不是在 SQL Server 一侧。
如何让 Entity Framework Core 生成 UNION 而不是多个查询?
根据这个 GitHub 问题,服务器端 UNION 还没有在 EF Core 2.0.1 中实现。服务器端 UNION 计划在 EF Core v.2.1 中实现,到那时 EF 将执行本地联合(在内存中)。
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |