1

EF によって生成された SQL クエリを見ると、

SELECT [extent1].ID as ID,
[extent1].Name as Name 
From( 
Select myview.ID as ID,
myview.Name as Name
From myview) AS [extent1]
Where([Extent1].ID = @p_linq_0)

内側の選択で外側の選択が行われるのはなぜですか? 外部クエリを使用して簡単にレコードを取得できる非常に大きなテーブルがありますが、クエリ全体がタイムアウトになります。

私のLinqクエリ

var result = from i in invitationEntity.Invitations
.Where(a=>a.id == inviationId)
select i;

SQL 2012 & EF5 & Linq を使用しています。

より単純なクエリを「強制」する方法はありますか?

4

2 に答える 2

5

LINQメソッドと一緒に最後にもう一度「SELECT」を呼び出しているからです。

var result = from i in invitationEntity.Invitations
.Where(a=>a.id == inviationId)
select i;

最後の行 select i, は役に立ちませんが、EF はそれが有用かどうかを認識していないため、単純に回避できます。

var result = invitationEntity.Invitations
.Where(a=>a.id == inviationId);

結果を列挙してすべてを取得することもできます。

申し訳ありませんが、追加するのを忘れていました。「from」を使用する必要はありません。単に .Where(expression ) を使用できます。

LINQ キーワードを使用する場合は、次のように使用できます。

var result = from i in invitationEntity.Invitations
where i.id == invitationId
select i;

LINQ キーワードと LINQ 拡張メソッドを混在させることはできません。

于 2013-07-29T18:35:19.983 に答える
0

私はそれを言うだろう

   var result = from i in invitationEntity.Invitations
               .Where(a=>a.id == inviationId)
                select i;

これ

    a=>a.id == inviationId

a=>生成から

  Select myview.ID as ID,
  myview.Name as Name
  From myview

a[extent1]もそうです

「標準」のWHERE句を使用する必要があります

           from i in invitationEntity.Invitations
                  where i.id == inviationId
            select i;
于 2013-07-29T18:39:50.927 に答える