我正在使用最新的 WCF DataServices 5.1rc。我知道派生类型导航属性应该是固定和支持的。但是,在尝试为该属性删除链接时,我遇到了以下问题。
我有一个从 CategoryBase 类继承的 Category 类。Category 类有一个名为 Attributes 的属性,我正在尝试从 Category 类中删除其中一个属性并得到一个异常“找不到段 'Attributes' 的资源(基于 DataServiceContext 的 Web 服务公开了“public IQueryable Categories”属性) .
在使用提琴手检查请求后,我发现了以下请求:
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 时为空,但是当我从服务 DataServiceContext.Entities[0].ServerTypeName = 'MyNamespace.Data.Catalogs.Category' 接收类别时。
我该如何解决?