MySQl 5.5.19、エンティティ フレームワーク 4.3 を使用し、Sun 提供の MySQL コネクタと DevArt コネクタの両方を試しましたが、両者に違いはありませんでした。
したがって、異なるクエリを生成する 2 つのステートメントがあります。1 つ目は次のとおりです。
var desserts = context.desserts
.AsQueryable()
.OrderBy(m => m.Id)
.Where(m => m.FlavorId == 123)
.ToList();
そして2つ目は
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
2 番目のクエリは、次のような非常にコストのかかるクエリを生成します。
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
そしてもちろん、後者のクエリは、私の製品コードで使用されているものです。これら 2 つの結果が異なるクエリになる理由がわかりません。
これを修正する方法はありますか?