我在SQl服务器中有一个sql View :
SELECT dbo.job.idJob, SUM(dbo.tracking.iQty) AS TotalOrdered, dbo.tracking.idProduct
FROM dbo.tracking INNER JOIN
dbo.job ON dbo.tracking.idJob = dbo.job.idJob
GROUP BY dbo.tracking.idAction, dbo.tracking.idProduct, dbo.job.idJob
在SQL Server中,它返回:
idJob TotalOrdered idProduct
----------- ------------ -----------
5000 150 9
5000 75 18
5006 20 3
问题:
当我通过WPF 4.5项目中的Entity Framework 6访问此 View 时,它返回不同的结果。我将 View 添加到edmx文件中,然后通过以下方式调用该 View :
Public Function GetTracking_Ordered(idJob As Integer) As Collection(Of vw_Tracking_Ordered) Implements ITrackingDataService.GetTracking_Ordered
Try
Using context = _ModelService.NewContext
Dim trackingList = (From recs In context.vw_Tracking_Ordered Where recs.idJob = idJob Select recs).ToList
Return New Collection(Of vw_Tracking_Ordered)(trackingList)
End Using
Catch ex As Exception
Return Nothing
End Try
End Function
结果如下:
idJob TotalOrdered idProduct
----------- ------------ -----------
5000 150 9
5000 75 9
5006 20 3
注意5000作业的idProduct现在都是9而不是9和18。
问题:
谁能帮助我调试为什么此结果从SQL Server更改为Entity Framework?
提前感谢
最佳答案
确保在View
文件中的.edmx
分配了主键。如果还没有,请使用edmx设计器自己添加适当的entity key
。在这种情况下,您可能需要在实体 key 中包括idJob
和idProduct
列。
在这里也阅读:http://msdn.microsoft.com/en-us/library/vstudio/dd163156(v=vs.100).aspx
关于.net - SQL Server View 在 Entity Framework 中返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25840878/