0

簡単なクエリを作成し、ビューとして保存しました (以下を参照)。SSMS でクエリを実行すると、30 行が返され、正しいです。Entity Frameworkで設定すると(ウィザードをずっと使用して... 3回実行しました...)、結果のグリッドビューで少なくとも1行が数回複製されます。合計で 30 行が表示されますが、多くはダップであり、他は欠落しています。1 行が 9 回複製されます。

EF にアーティファクトが残っていないことを確認するために、以下のスクリプトを使用して新しい名前でビューを再作成しました (3 つは実際には 2 つの動作不良です)。新しいデータソースと「autogenerate = true」をオンにしたほぼ完全にバニラのデータグリッドを備えたバージンasp.netページを使用したため、何も制御しませんでした。それが役立つ場合は、マークアップを表示できます。生成されたマークアップにはすべての重複が含まれているため、クライアントのレンダリングの問題ではありません。

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