【发布时间】:2013-01-18 01:20:14
【问题描述】:
我正在尝试将 WCF 数据服务与包含在可移植库中的 POCO 数据模型一起使用。服务器端使用模型没有问题,但是在客户端,当提要物化时,我得到这个错误:
类型为“PortableEntities.Customers”的名称为“Orders”的属性具有“结构”类型,但应为“导航”类型
客户端似乎无法具体化未实现为 DataServiceCollection(可移植库不可用的类型)的关系。
有没有办法使用 HashSet 或 List 等其他 ICollection 类型?
这是我的可移植库中的模型类(来自 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
【问题讨论】:
-
你能分享一下 Orders 类的定义吗? Orders 是否具有 ID 属性或 DataServiceKey 属性?如果不是,WCF 数据服务会将其视为复杂类型而不是实体类型。添加 ID 属性或 DataServiceKey 属性可能会有所帮助。
-
我认为你是对的。由于可移植库,我不能使用 DataServiceKey 属性,但我可以使用约定。问题是Northwind 的表名为Orders,而id 名为OrderId。按照惯例,我的班级应该命名为 Order 而不是 Orders。你能写一个答案让我接受吗?