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 Functi开发者_如何学Pythonon 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
First, use Fiddler to check wether raw server response is correct ot not.
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...
Imports System.ComponentModel.DataAnnotations
Imports System.Runtime.Serialization
Public Class EngineeringHeadBUHistory
'<Key()>
'<DataMember()> _
'Property BusinessUnit As String
<Key()>
<DataMember()>
Property Month As Date
<DataMember()> _
Property HeadCount As Integer
End Class
精彩评论