我使用的是最新的WCF DataServices 5.1rc。我知道派生的类型导航属性应该是固定的并得到支持。然而,我在尝试删除该属性的链接时遇到了以下问题。
我有一个从CategoryBase类继承的Category类。Category类有一个名为Attributes的属性,我正试图从Category类中删除其中一个属性,并获得一个异常"找不到段'Attributes'的资源"(基于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]接收类别时。ServerType="MyNamespace.Data.Catalogs.Category".
我该如何解决这个问题?
这是WCF 5.1rc中已确认的错误。希望在最终发布之前修复。