开发者

Ria data corruption from server to client

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜