Web Api コントローラーで次のメソッドを検討してください。
[Queryable(AllowedQueryOptions= AllowedQueryOptions.All)]
public override IQueryable<Mandate> Get()
{
return new List<Mandate>() { new Mandate() {
Id = 1,
PolicyNumber = "350000000",
OpenPositions = new List<OpenPosition>(){
new OpenPosition(){ Id = 1, Amount =2300 },
new OpenPosition(){ Id = 2, Amount =2100 }
}},
new Mandate() {
Id = 2,
PolicyNumber = "240000000" ,
OpenPositions = new List<OpenPosition>(){
new OpenPosition(){ Id = 3, Amount =2500 },
new OpenPosition(){ Id = 2, Amount =2100 }
}
} }.AsQueryable<Mandate>();
}
ここで、リストは手動で作成されます。次の URL を参照すると、次のようになります。
http://localhost:52446/odata/Mandates?$filter=Id eq 1
リストから正しい項目を返します。
明らかに、リストはデータベース構造である可能性が高くなります。データは何らかの ORM を使用して取得され、Web API サービスに返されます。
私は Entity Framework を使用していません (レガシー システムのため使用できません)。
この場合、どのように Web API を使用しますか? データアクセスを担当するレイヤーによってフィルターが適用されるように、url パラメーターをどのように変換すればよいでしょうか?