WCF 5.x DeleteLink来自派生类型导航属性



我使用的是最新的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中已确认的错误。希望在最终发布之前修复。

相关内容

  • 没有找到相关文章

最新更新