0

我正在使用最新的 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' 接收类别时。

我该如何解决?

4

1 回答 1

1

这是 WCF 5.1rc 中已确认的错误。希望它在最终版本之前得到修复。

于 2012-07-25T18:59:19.567 回答