我无法理解为什么 SQL 输出有一个我在 LINQ 中编写的简单查询的子查询。这是我的代码:
var list = db.User.Where(u => u.Name == somename).OrderBy(u => u.IdUser).ToList();
其中somename是我在执行时传递的参数。
输出 SQL 为:
SELECT
Project1.IdUser,
Project1.Name
FROM (SELECT
Extent1.IdUser,
Extent1.Name
FROM user AS Extent1
WHERE Extent1.Name = 'John' /* @p__linq__0 */) AS Project1
ORDER BY
Project1.IdUser ASC
输出真的应该有一个简单的子查询吗?
我也试过
var list = db.User.Where(u => u.Name.Equals(somename)).OrderBy(u => u.IdUser).ToList();
它产生与上面相同的输出。
如果我对参数进行硬编码,例如:
var list = db.User.Where(u => u.Name == "John").OrderBy(u => u.IdUser).ToList();
它按预期工作,仅生成
SELECT
Extent1.IdUser,
Extent1.Name
FROM user AS Extent1
WHERE 'John' /* @gp1 */ = Extent1.Name
ORDER BY
Extent1.IdUser ASC
我正在使用的一些东西:
- 实体框架 5、.NET 4.5
- SQL Server 2012
- Glimpse(使用 MiniProfiler)查看生成的 SQL
我不是 LINQ 专家,所以我在这里缺少什么?