1

WCF Data ServicesとODataを初めてチェックしていますが、エンティティモデルで継承を使用するのは悪い習慣ではないかと思います。あまりサポートされていないようです。

たとえば、派生型のプロパティでフィルタリングしたいODataで問題が発生しています。しかし、基本タイプのプロパティでのみフィルタリングできるようですか?

これは失敗します:http:// [localhost]:8080 / Entities?$ filter = startupswith(Text、'bla')

いずれにせよ、派生していないエンティティタイプを作成し、さまざまなエンティティタイプのプロパティを「調和」させるためのインターフェイスを用意する方がよいでしょうか。

例えば:

EntityBase-> Id、ParentId

ノートブック:EntityBase-> Title

注:EntityBase->テキスト

また

IEntity-> Id、ParentId

ノートブック:IEntity-> Id、ParentId、Title

注:IEntity-> Id、ParentId、Text


また、5.1.0-rc1で$ format-tagがまだサポートされていないのはなぜですか?

4

1 に答える 1

2

$formatはまもなくサポートされます。これは、イデオロギー上の理由と単純な回避策があるため、優先度が低くなっています。それまでは、 Pabloがブログに書いているJSONP属性を使用できます。いずれにせよ、今後数か月のうちに、スタックによってURLでサポートされる$formatが表示されるはずです。

派生型に関しては、ほとんどの操作は私の知る限り正常に機能するはずです。派生型のプロパティでフィルタリングするには、最初にその型にキャストする必要があります。たとえば、私のScratchサービスには、次のクラスがあります。

namespace Scratch.Web
{
    public abstract class Product
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public Product RelatedProduct { get; set; }
    }

    public class DiscountedProduct : Product
    {
        public double Discount { get; set; }
        public ICollection<Category> Categories { get; set; }
    }

    // ...
}

これにより、次のようなクエリを発行できます(10を超える割引のあるすべての割引商品が表示されます)。

http://localhost:59803/ScratchService.svc/Products/Scratch.Web.DiscountedProduct?$filter=Discount gt 10.0

URLで、(完全修飾エンティティタイプ名を使用して)フィルタリングするタイプへのキャストに注意してください。

于 2012-08-11T07:25:41.697 に答える