ASP.NET Web APIプロジェクトがあり、プロジェクトでASP.NEToDataプレビューパッケージを使用してoDataフィルターを使用したいと考えています。これはIQueryable
、応答タイプとして使用する必要があることを意味します。
残念ながら、消費者は次のようにラップされた応答を必要とします。
{
"total": 2,
"success": true,
"data": [
{ object1 },
{ object2 } ]
}
IQueryable
元のバージョンからの応答を「data」プロパティに割り当て、「total」プロパティと「success」プロパティの値も設定するラッパーオブジェクトを作成しました。これにより、コンシューマーが探しているJSON応答が作成されます。しかし、それはもはやIQuery可能ではありません。つまり、oDataフィルターを実装することはできません。
ラッパーオブジェクトを取得し、列挙子などを設定してIQueryableを実装することを望んでいました。ただし、インターフェイスを実装するためにProviderプロパティとExpressionプロパティを割り当てる必要があるため、これは機能しないと思います。私がそこに何を置くべきかを知っています。IoCでリポジトリパターンを使用しています。EntityFrameworkコードの最初のデータアクセスは別のプロジェクトで行われ、Ninjectを使用して具体的なオブジェクトがインターフェイスプレースホルダーに割り当てられています。おそらく、リポジトリオブジェクトがIQueryProviderへの参照を保持するように、データアクセス層からインターフェイスを抽象化することができます。これでうまくいき、自動化されたoData統合をサポートできると思いますか?