我在http://msdn.microsoft.com/en-us/library/dd728281.aspx#Y0检查了代码示例,发现了一件有趣的事情:如果我们从OrderItemData类中删除Public ReadOnly Property Items(),该服务会显示错误。即使我们不尝试访问Items,也只是使用Orders。 有人可以解释为什么需要这个属性吗?
编辑:澄清:该属性未直接使用。我从代码中删除它,它成功编译,但服务返回请求错误:“服务器遇到处理请求的错误。请参阅服务器日志以获取更多详细信息。”而且没有例外。
我认为该服务由于某种原因可能需要IQueryable(Of Item)属性。即使该属性返回Nothing,服务也会再次开始工作:
Public ReadOnly Property Items() As IQueryable(Of Item)
Get
Return Nothing
End Get
End Property
答案 0 :(得分:2)
当WCF数据服务使用反射提供程序(这是示例所做的)时,每个实体类型都必须满足以下条件:
如果删除Items属性,则违反上述规则3。因此,类型Item不再被识别为实体类型(它在内部被视为复杂类型),但随后它在Order类上用作集合的项类型。这意味着它必须是导航属性,但这需要项类型为实体。
如果您正在寻找某种包含(其中的商品只能通过其所属的订单访问),则WCF DS当前不支持此功能。