2011-06-28 47 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!