Службы данных WCF и переносимая библиотека

Я пытаюсь использовать службы данных WCF с моделью данных POCO, содержащейся в переносимой библиотеке. На стороне сервера нет проблем с использованием модели, но на стороне клиента, когда фид материализуется, я получаю эту ошибку:

Свойство с именем «Заказы» типа «PortableEntities.Customers» имеет тип «Структурный», но ожидается, что оно будет иметь вид «Навигация».

Похоже, что клиент не может материализовать отношение, которое не реализовано как DataServiceCollection (тип, недоступный для переносимых библиотек).

Есть ли способ использовать другой тип ICollection, такой как HashSet или List?

Вот класс модели в моей переносной библиотеке (от Northwind):

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

person Jonathan Clément    schedule 14.01.2013    source источник
comment
Можете ли вы поделиться определением класса Orders? Есть ли в Orders свойство ID или атрибут DataServiceKey? Если это не так, WCF Data Services будет рассматривать это как сложный тип, а не как тип сущности. Добавление свойства ID или атрибута DataServiceKey может помочь.   -  person Pratik    schedule 15.01.2013
comment
Я думаю, вы правы. Я не могу использовать атрибут DataServiceKey из-за переносимой библиотеки, но могу использовать соглашение. Проблема в том, что таблица Northwind называется Orders, а идентификатор называется OrderId. Согласно соглашению, мой класс должен называться Order, а не Orders. Можете ли вы написать ответ, чтобы я мог его принять?   -  person Jonathan Clément    schedule 15.01.2013


Ответы (1)


Можете ли вы поделиться определением класса Orders? Есть ли в Orders свойство ID или атрибут DataServiceKey? Если это не так, WCF Data Services будет рассматривать это как сложный тип, а не как тип сущности. Добавление свойства ID или атрибута DataServiceKey может помочь.

person Pratik    schedule 17.01.2013
comment
Я не могу использовать атрибут DataServiceKey из-за переносимой библиотеки, но могу использовать соглашение. Проблема в том, что таблица Northwind называется Orders, а идентификатор называется OrderId. Согласно соглашению, мой класс должен называться Order, а не Orders. - person Jonathan Clément; 17.01.2013