0

我编写了一个简单的查询并将其保存为视图(见下文...)当我在 SSMS 中运行查询时,它返回 30 行,它们是正确的。当我在实体框架中设置它时(全程使用向导......我做了三遍......)在生成的网格视图中至少有一行重复了几次。我总共有 30 行,但很多是重复的,还有一些是缺失的。一行重复 9 次。

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

也许我应该通过使用 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
4

0 回答 0