現在、Web APIでODataクエリ構文を使用しています。 ODataの完全な実装を実装するつもりはありません。単にクエリ構文を活用するだけです。ASP.NET Web API OData - DTOクエリをEntityクエリに変換する
通常、アプリケーションを複数のレイヤーに分割するのは、優れたアプリケーションアーキテクチャと見なされます。 最新のWebアプリケーションでは、これらのレイヤーには、データレイヤーとUI /トランスポートレイヤーが含まれています。
例えば:あなたはこのようになります(Entity Frameworkの)モデルのデータベースを持っていることがあります。
public class Employee
{
public Guid Id {get; set;}
public string Name {get; set;}
public int AccessLevel {get; set;}
}
が、あなたのWeb APIは、異なるワイヤフォーマットであなたの顧客にこのデータを公開することがあります。
public class EmployeeDto
{
public string Name {get; set;}
public string SecurityClearence {get; set;}
}
ASP.NET Web APIとMicrosoft ASP.NET Web API ODataライブラリを使用して、顧客がDTO形式 に対してクエリを書く方法をどのようにしたら実現できますか?
?$filter=(SecurityClearence eq 'TopSecret')
...私たちはそれを私たちのデータフォーマットに変換します。 例:
?filter=(AccessLevel eq 007)
か、私は動的な表現としての私のデータベースを照会することができますいくつかの他の形式。 例:
db.Employees.Where(translatedExpression);
私は手動でこれを達成するにはいくつかの方法を考えてきたが、私は、私はこれまでのところ、私の実装を感じるので、他の人がこれを解決する方法を知っていることに熱心だ精査まで保持するのは非常に原油とはほとんどありません。
これの一部または全部を達成するWeb API ODataライブラリ(および関連するEDMライブラリ)の機能はありますか?
私はそのパッケージを見ていきたいと思います。 私は2つの理由から私が思いついたことは好きではありませんでした:1)予測がSQLで行われていたため、キーインデックスを照会しなくなりました。 2)私たちはAPIをバージョンアップしており、APIバージョンごとに異なるプロジェクションを書こうとは思わなかった。私の好みのアプローチは、データベースにヒットする前にそれらを照会することです。これははるかに難しいですが。 –