【发布时间】:2014-06-26 16:55:43
【问题描述】:
我正在尝试重用 EntityFramework 6 生成的 SQL 作为手动创建的 SQL 语句中的子选择。例如,以下查询:
dbContext.Users
.GroupBy(u => u.Email)
.Select(g => new {Email = u.Key, Name = g.Max(u1 => u1.Name)})
.ToString()
导致以下 SQL:
SELECT
1 AS [C1],
[GroupBy1].[K1] AS [Email],
[GroupBy1].[A1] AS [C2]
FROM ( SELECT
[Extent1].[Email] AS [K1],
MAX([Extent1].[Name]) AS [A1]
FROM [dbo].[Users] AS [Extent1]
GROUP BY [Extent1].[Email]
) AS [GroupBy1]
请注意,select 中的字段列表与查询返回的数据类型不匹配(有一个 C1、C2 不在 {Email, Name} 的匿名类型中)。有没有办法通过查看查询属性/等来找出映射?然后我就可以在外部 SQL 语句中引用这些属性了。
【问题讨论】:
-
这样做听起来有点冒险,因为 SQL 查询是动态生成的,并且不能保证它总是一样的。
标签: c# .net sql-server linq entity-framework