最新のWCFDataServices5.1rcを使用しています。派生型のナビゲーションプロパティは修正され、サポートされることになっていることを私は知っています。ただし、プロパティのDeleteLinkを実行しようとすると、次の問題が発生します。
CategoryBaseクラスから継承されたCategoryクラスがあります。CategoryクラスにはAttributesというプロパティがあり、Categoryクラスから属性の1つを削除しようとすると、「セグメント'Attributes'のリソースが見つかりません」という例外が発生します(DataServiceContextベースのWebサービスは「publicIQueryableCategories」プロパティを公開します) 。
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'からカテゴリを受け取ったとき。
これを修正するにはどうすればよいですか?