2016-11-08 1 views
0

現在、WCF DataServiceを作成して大きなデータセットを公開しようとしています。 データは、サーバー側でページング、ソート、および照会のサポートを組み込んだDevExpressグリッドに表示されます。 生成されたエンティティをエンティティフレームワークで公開すると、これは問題なく動作します。WCF DataServiceにエンティティではないDataTransferObjectsを公開する

しかし、私は、何らかの抽象として動作するDataTransferオブジェクトを公開したいと思います。 私は実際にウェブ上の情報源を見つけることができません...

多分、あなた方のうちのいくつかが私を正しい方向に向けることができます。

答えて

0

Idという名前のプロパティが[Key]という属性を持つDTOクラスを作成します。 ODataControllerを継承するクラスを作成します。これはあなたのコントローラです。 IQueryableを使用してデータを返す方法で

[EnableQuery] 
    public virtual IQueryable<MyDto> Get() 
    { 
    } 

:その上でGet()という名前のメソッドを置きます。 odata設定でDTOのEntitySetを呼び出した後、

+0

私が正しく理解したら、EF.Entities.ToList() - >これをDtopとしてQueryableに変換する必要があります。 または、データベースから検索するときは、選択した新規Dto {...}を使用して投影を行います。私がこれを行うと、dtoとエンティティをマッピングできないため、フィルタメカニズムが動作しなくなるという問題が発生します。 – Xeun

+0

ToList()を強制的に呼び出すことはありません。あなたは 'EF.Entities.Select(x => new Dto {P1 = x.P1})のようなあなたの選択の出力を返すことができます ' –

+0

先ほど言いましたが、これはフィルターに問題を引き起こします。グリッドは「列」をフィルタリングします。エンティティ内に存在しないか、または異なる名前のプロパティ。 – Xeun

関連する問題