我编写了一个简单的查询并将其保存为视图(见下文...)当我在 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