簡體   English   中英

實體框架,為什么生成此sql?

[英]Entity Framework, why is this sql being generated?

當我查看由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。

有沒有辦法“強制”更簡單的查詢?

因為您將在最后一次與LINQ方法一起調用“ SELECT”。

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

最后一行選擇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擴展方法。

我會這樣說

   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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM