SQL Server视图返回奇怪的EF结果

时间:2013-02-23 18:14:04

标签: asp.net entity-framework-4

我写了一个简单的查询并将其保存为视图(见下文......) 当我在SSMS中运行查询时,它返回30行,并且它们是正确的。 当我在实体框架中设置它时(使用向导整个...我做了三次......)在生成的gridview中至少有一行重复多次。我总共得到30行,但很多都是重复的,而其他的则丢失了。一行重复9次。

我使用下面的脚本使用新名称重新创建了视图(其中三个实际上是两个行为不端),以确保EF没有任何剩余的工件。我使用了一个处女的asp.net页面,带有一个新的数据源和一个处女,几乎完全是带有“autogenerate = true”的vanilla数据网格,所以我没有控制任何东西。我可以显示标记,如果这会有所帮助。生成的标记中包含所有重复项,因此它不是客户端呈现问题。

也许我应该通过使用Linq to SQL或其他东西将EF带出循环,但我不知道如何。发布之后我会尝试这样做。感谢....

[编辑 - 我将数据源更改为SQLDataSource,它运行良好。确切的结果!]

    USE [CPAS];
GO

SET ANSI_NULLS ON;
GO

SET QUOTED_IDENTIFIER ON;
GO

CREATE VIEW dbo.tstTimesheetSummarybyWorkerDiscipline
AS SELECT dbo.tblTimesheetDetail.TimesheetID , 
          dbo.tblWorkers.WorkerName AS [Worker Name] , 
          dbo.tblStaffAugLaborRates.TradeType AS [Trade Type] , 
          SUM( dbo.tblTimesheetDetail.TSDStdHrs
             )AS [Regular Hours] , 
          SUM( dbo.tblTimesheetDetail.TSDOTHrs
             )AS [Overtime Hours] , 
          SUM( dbo.tblTimesheetDetail.TSDDTHrs
             )AS [Doubletime Hours] , 
          SUM( dbo.tblTimesheetDetail.TSDStdHrs + dbo.tblTimesheetDetail.TSDOTHrs + dbo.tblTimesheetDetail.TSDDTHrs
             )AS [Tot Hrs] , 
          SUM( dbo.tblTimesheetDetail.TSDMiscAmt
             )AS [Expense Amt] , 
          COUNT( *
               )AS [Timesheet Count]
     FROM
          dbo.tblTimesheetDetail INNER JOIN dbo.tblWorkers
          ON dbo.tblTimesheetDetail.TSDWorkerID
             = 
             dbo.tblWorkers.ID
                                 INNER JOIN dbo.tblStaffAugLaborRates
          ON dbo.tblTimesheetDetail.TSDLaborRateID
             = 
             dbo.tblStaffAugLaborRates.ID
     GROUP BY dbo.tblTimesheetDetail.TimesheetID , 
              dbo.tblWorkers.WorkerName , 
              dbo.tblStaffAugLaborRates.TradeType;

GO

0 个答案:

没有答案