【发布时间】:2012-05-04 06:57:49
【问题描述】:
使用 MySQl 5.5.19,实体框架 4.3,并尝试了 Sun 提供的 MySQL 连接器和 DevArt 连接器,两者之间没有任何区别。
所以,我有两个产生不同查询的语句。第一个是:
var desserts = context.desserts
.AsQueryable()
.OrderBy(m => m.Id)
.Where(m => m.FlavorId == 123)
.ToList();
第二个是
var desserts = context.desserts
.AsQueryable()
.OrderBy(m => m.Id)
.Where(m => m.FlavorId == someFlavorId)
.ToList();
第一个查询产生如下所示的 SQL 查询:
SELECT
Extent1.Id,
Extent1.Name,
Extent1.FlavorId
FROM icecream.dessert AS Extent1
WHERE Extent1.FlavorId = 123
ORDER BY Extent1.Id ASC
第二个生成的查询开销更大,如下所示:
SELECT
Project1.Id,
Project1.Name,
Project1.FlavorId
FROM(
SELECT
Extent1.Id,
Extent1.Name,
Extent1.FlavorId
FROM icecream.dessert AS Extent1
WHERE Extent1.FlavorId = 123
) AS Project1
ORDER BY Project1.Id ASC
当然,后一个查询是我的生产代码中使用的查询。我很困惑为什么这两个会导致不同的查询。
任何想法如何解决这个问题?
【问题讨论】:
标签: mysql entity-framework linq-to-entities