在 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 服务。
我不使用实体框架(因为遗留系统我不能)。
在这种情况下我将如何使用 Web API?我将如何翻译 url 参数,以便负责数据访问的层应用过滤器?