2013-01-14 71 views
1

我正嘗試使用WCF數據服務和便攜式庫中包含的POCO數據模型。服務器端使用模型沒有問題,但在客戶端,當訂閱源實現時,出現此錯誤:WCF數據服務和便攜式庫

類型爲'PortableEntities.Customers'的名稱爲'訂單'的屬性具有種類'結構',但預計會是類似'導航'

客戶端似乎無法實現未作爲DataServiceCollection(便攜式庫不可用的類型)實現的關係。

有沒有辦法使用其他ICollection類型如HashSet或List?

這裏是我的便攜式庫中的模型類(從羅斯文):

Partial Public Class Customers 
    Public Property ID As String 
    Public Property CompanyName As String 
    Public Property ContactName As String 
    Public Property ContactTitle As String 
    Public Property Address As String 
    Public Property City As String 
    Public Property Region As String 
    Public Property PostalCode As String 
    Public Property Country As String 
    Public Property Phone As String 
    Public Property Fax As String 

    Public Overridable Property Orders As ICollection(Of Orders) = New HashSet(Of Orders) 
    Public Overridable Property CustomerDemographics As ICollection(Of CustomerDemographics) = New HashSet(Of CustomerDemographics) 

End Class 
+0

你可以分享訂單類的定義嗎?訂單是否具有ID屬性或DataServiceKey屬性?如果不這樣做,WCF數據服務會將其視爲複雜類型而不是實體類型。添加ID屬性或DataServiceKey屬性可能會有所幫助。 – Pratik

+0

我認爲你是對的。由於便攜庫的原因,我無法使用DataServiceKey屬性,但我可以使用約定。問題是Northwind的表被命名爲Orders,並且該ID被命名爲OrderId。根據慣例,我的班級應該被命名爲Order not Orders。你能寫一個答案,以便我可以接受它嗎? –

回答

2

可以共享此訂單類的定義是什麼?訂單是否具有ID屬性或DataServiceKey屬性?如果不這樣做,WCF數據服務會將其視爲複雜類型而不是實體類型。添加ID屬性或DataServiceKey屬性可能會有所幫助。

+0

由於便攜式庫,我無法使用DataServiceKey屬性,但我可以使用約定。問題是Northwind的表被命名爲Orders,並且該ID被命名爲OrderId。根據慣例,我的課程必須命名爲訂單不訂單。 –