2011-06-28 44 views
0

我有一個VB.Net Linq to Entities查詢,它從SQL Server 2005返回數據。如果我將查詢複製到LinqPad中,它按預期工作,但是當我嘗試運行代碼時它會返回所有計數等於1.Linq to Entities SQL生成問題

唯一改變的是日期值在LinqPad中被破壞並作爲VB中的參數傳遞。

任何想法是什麼錯?從視圖模型

日期參數如下,應表示2011年1月1日 - ?> 2011年2月1日

的startDate 「#1 /二千○十一分之一#」 結束日期 「#2/1/2011#」從SQL事件探查器

exec sp_executesql N'SELECT 
1 AS [C1], 
[Project4].[BusinessUnit] AS [BusinessUnit], 
[Project4].[C1] AS [C2] 
FROM (SELECT 
    [Project2].[BusinessUnit] AS [BusinessUnit], 
    (SELECT 
     COUNT(1) AS [A1] 
     FROM (SELECT DISTINCT 
      [Extent6].[BusinessUnit] AS [BusinessUnit] 
      FROM [dbo].[tblEngineeringDashboard_ItemList] AS [Extent4] 
      INNER JOIN [dbo].[tblTime] AS [Extent5] ON [Extent4].[TimeID] = [Extent5].[ID] 
      INNER JOIN [dbo].[tblEngineeringDashboard_Business] AS [Extent6] ON [Extent4].[BusinessID] = [Extent6].[ID] 
      WHERE ([Extent5].[Period] >= @p__linq__0) AND ([Extent5].[Period] <= @p__linq__1) AND ([Project2].[BusinessUnit] = [Extent6].[BusinessUnit]) 
     ) AS [Distinct2]) AS [C1] 
    FROM (SELECT 
     [Distinct1].[BusinessUnit] AS [BusinessUnit] 
     FROM (SELECT DISTINCT 
      [Extent3].[BusinessUnit] AS [BusinessUnit] 
      FROM [dbo].[tblEngineeringDashboard_ItemList] AS [Extent1] 
      INNER JOIN [dbo].[tblTime] AS [Extent2] ON [Extent1].[TimeID] = [Extent2].[ID] 
      INNER JOIN [dbo].[tblEngineeringDashboard_Business] AS [Extent3] ON [Extent1].[BusinessID] = [Extent3].[ID] 
      WHERE ([Extent2].[Period] >= @p__linq__0) AND ([Extent2].[Period] <= @p__linq__1) 
     ) AS [Distinct1] 
    ) AS [Project2] 
) AS [Project4]',N'@p__linq__0 datetime,@p__linq__1 datetime',@p__linq__0='2011-01-01 00:00:00:000',@p__linq__1='2011-02-01 00:00:00:000' 
+0

我的錯。忘了刪除.Distinct。 DOH! –

回答

0

我的錯

Public Function GetPLMNewPartCounts(ByVal startDate As Date, ByVal endDate As Date) As IEnumerable(Of NewPartsCounts) 

     Return From i In ObjectContext.tblEngineeringDashboard_ItemList 
        Join t In ObjectContext.tblTimes On t.ID Equals i.TimeID 
        Join b In ObjectContext.tblEngineeringDashboard_Business On b.ID Equals i.BusinessID 
        Where t.Period >= startDate And t.Period <= endDate 
        Group b By Key = b.BusinessUnit Into Group 
        Select New NewPartsCounts With {.BusinessUnit = Key, 
                .NewPartsCount = Group.Select(Function(c) c.BusinessUnit).Distinct().Count()} 

End Function 

TSQL。忘了刪除.Distinct。 DOH!