从服务器到客户端的 Ria 数据损坏
我在 Silverlight 4 Ria 项目的服务器端有一个 Linq 查询,它根据时间段(月)返回许多不同的项目。
我遇到的问题是,当客户端回调触发时,数据已损坏,并且从服务器返回的所有项目都是集合中最后一个项目的重复项。
服务器调用
Public Function GetBusinessHeadCountHistory(ByVal businessUnit As String) As IEnumerable(Of EngineeringHeadCountBusinessHistory)
Return From t In ObjectContext.tblTimes
Join h In ObjectContext.tblEngineeringDashboard_CADMachinesCounts On t.ID Equals h.TimeID
Join b In ObjectContext.tblEngineeringDashboard_Business On h.BusinessID Equals b.ID
Where b.BusinessUnit = businessUnit
Order By t.Period
Select New EngineeringHeadCountBusinessHistory With {.Month = t.Period, .BusinessUnit = b.BusinessUnit, .HeadCount = h.Count}
End Function
客户端回调
Public Property EngineeringBusinessHistoryCount As ReadOnlyObservableCollection(Of EngineeringHeadCountBusinessHistory)
Get
Return _engineeringBusinessHistoryCount
End Get
Set(ByVal value As ReadOnlyObservableCollection(Of EngineeringHeadCountBusinessHistory))
_engineeringBusinessHistoryCount = value
IsBusinessCountBusy = False
RaisePropertyChanged("ChildReportTitle")
RaisePropertyChanged("EngineeringBusinessHistoryCount")
End Set
End Property
我已经确认来自服务器和 LinqPad 中的 Linq 查询是正确的。
有什么想法吗?
编辑:Fiddler RAW 回复
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1738
Content-Type: application/msbin1
Expires: -1
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Date: Thu, 30 Jun 2011 11:08:47 GMT
@#GetBusinessHeadCountHistoryResponsehttp://tempuri.org/@!GetBusinessHeadCountHistoryResult aDomainServices i)http://www.w3.org/2001/XMLSchema-instance^
TotalCount�^
RootResults b<http://schemas.datacontract.org/2004/07/EngineeringDashboard_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month����~�X�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month��@���p�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month��@DE��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month���hE��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month���w`ض�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month��@E�4��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month����{���_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount� _Month���x�#��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount� _Month��@F��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount� _Month�����/�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�"_Month���y�nG�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�"_Month�����_�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�"_Month�����]w�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�$_Month���z���_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�$_Month���
����_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�$_Month��@����
Phil
I have a Linq query on the server side of a Silverlight 4 Ria project that returns a number of distinct items based on a time period(Month).
The problem I am getting is when the client callback fires the data has been corrupted and all the items returned from the server are duplicates of the last item in the collection.
Server Call
Public Function GetBusinessHeadCountHistory(ByVal businessUnit As String) As IEnumerable(Of EngineeringHeadCountBusinessHistory)
Return From t In ObjectContext.tblTimes
Join h In ObjectContext.tblEngineeringDashboard_CADMachinesCounts On t.ID Equals h.TimeID
Join b In ObjectContext.tblEngineeringDashboard_Business On h.BusinessID Equals b.ID
Where b.BusinessUnit = businessUnit
Order By t.Period
Select New EngineeringHeadCountBusinessHistory With {.Month = t.Period, .BusinessUnit = b.BusinessUnit, .HeadCount = h.Count}
End Function
Client Callback
Public Property EngineeringBusinessHistoryCount As ReadOnlyObservableCollection(Of EngineeringHeadCountBusinessHistory)
Get
Return _engineeringBusinessHistoryCount
End Get
Set(ByVal value As ReadOnlyObservableCollection(Of EngineeringHeadCountBusinessHistory))
_engineeringBusinessHistoryCount = value
IsBusinessCountBusy = False
RaisePropertyChanged("ChildReportTitle")
RaisePropertyChanged("EngineeringBusinessHistoryCount")
End Set
End Property
I have confirmed that the Linq query is correct from the server and in LinqPad.
Any ideas??
EDIT : Fiddler RAW repsonse
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1738
Content-Type: application/msbin1
Expires: -1
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Date: Thu, 30 Jun 2011 11:08:47 GMT
@#GetBusinessHeadCountHistoryResponsehttp://tempuri.org/@!GetBusinessHeadCountHistoryResult aDomainServices i)http://www.w3.org/2001/XMLSchema-instance^
TotalCount�^
RootResults b<http://schemas.datacontract.org/2004/07/EngineeringDashboard_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month����~�X�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month��@���p�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month��@DE��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month���hE��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month���w`ض�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month��@E�4��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�_Month����{���_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount� _Month���x�#��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount� _Month��@F��_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount� _Month�����/�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�"_Month���y�nG�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�"_Month�����_�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�"_Month�����]w�_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�$_Month���z���_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�$_Month���
����_#EngineeringHeadCountBusinessHistory_BusinessUnit�
skid-steer_ HeadCount�$_Month��@����
Phil
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,使用 Fiddler 检查原始服务器响应是否正确。
First, use Fiddler to check wether raw server response is correct ot not.
问题在于 POCO 类 Key 注释位于非唯一字段上。我已将其更改为独特的 Month 属性,现在它按预期工作。
但奇怪的错误...
The problem was down to the POCO class Key annotation being on a non-unique field. I have changed it around to the unique Month property and it now works as expected.
Strange error though...