我正在使用最新的WCF DataServices 5.1rc。我知道派生类型导航属性应该被修复和支持。但是,在尝试DeleteLink属性时遇到以下问题。
我有一个继承自CategoryBase类的Category类。 Category类有一个名为Attributes的属性,我试图从Category类中删除其中一个属性,并获得一个异常“找不到该段的资源'属性'(基于DataServiceContext的Web服务公开”public IQueryable Categories“属性)
在用fiddler检查请求后,我发现了以下请求:
DELETE http://somesite/DataServices/CatalogDataService.svc/CategoryBases('123')/$links/Attributes('23')
这是不正确的,因为CategoryBases不包含属性,它应该是这样的:
http://somesite/DataServices/CatalogDataService.svc/CategoryBases('123')/MyNamespace.Data.Catalogs.Category/$links/Attributes('23')
我查看了WCF的源代码,发现生成是在EntityDescriptor.cs类中进行的,这是不可能覆盖的。在最新的WCF中这仍然是一个问题,还是我做错了什么?
我知道我可以将属性移动到CategoryBase来解决问题,但宁愿避免这种情况。
我还使用以下方法在客户端上自己附加对象(当查询结果附加对象时,它可以正常工作):
client.AttachTo("CategoryBases", category);
查看DataServiceContext.Entities [0]时.ServerTypeName为null但是当我从服务DataServiceContext.Entities [0] .ServerTypeName ='MyNamespace.Data.Catalogs.Category'接收类别时。
我该如何解决这个问题?
答案 0 :(得分:1)
这是WCF 5.1rc中确认的错误。希望它在最终版本发布之前得到修复。