我看到了幾個StackOverflow問題,但這些問題似乎與我的情況相符。我保證我看了。爲什麼Linq會忽略我的where子句?
我對我的數據庫有一些查詢,我正在使用linq來做,我無法弄清楚爲什麼不正確的SQL正在生成。這發生在我的代碼中的幾個地方。我希望我們只是陷入一些衆所周知的疑難雜症,但我無法繞過我的頭,因爲Linq似乎決定我的where子句是愚蠢的,不應該將它添加到生成的SQL查詢中。
這是爲什麼?
實施例:
var testing = (from i in context.TableName1 where i.Param1 == object1.GuidParam select i).ToList();
上述查詢返回以下SQL
{SELECT
[Extent1].[RecordId] AS [RecordId],
[Extent1].[AnotherId] AS [AnotherId],
[Extent1].[YetAnotherId] AS [YetAnotherId],
[Extent1].[WeLikeIds] AS [WeLikeIds],
[Extent1].[WeReallyLikeIds] AS [WeReallyLikeIds]
FROM [dbo].[SomeTable] AS [Extent1]}
然而以下查詢:
var testing = (from i in context.TableName1 where i.Param1 == object1.GuidParam select i);
var testingToList = testing.ToList();
生成以下SQL正確
{SELECT
[Extent1].[RecordId] AS [RecordId],
[Extent1].[AnotherId] AS [AnotherId],
[Extent1].[YetAnotherId] AS [YetAnotherId],
[Extent1].[WeLikeIds] AS [WeLikeIds],
[Extent1].[WeReallyLikeIds] AS [WeReallyLikeIds]
FROM [dbo].[SomeTable] AS [Extent1]
WHERE [Extent1].[RecordId] = '78e49f5c-0ff8-e311-93f4-00155d514a6d'}
「Param1」和「GuidParam」的數據類型是什麼? LINQ是否可以決定where子句總是正確的? –
這是一個可空的uniqueIdentifier。 –
我問了兩件事,你回答了其中的一件。 –