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