7
考慮在網絡API控制器下面的方法:的WebAPI ODATA沒有實體框架
[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>();
}
下面列表中手動建立,如果我瀏覽到以下網址:
http://localhost:52446/odata/Mandates?$filter=Id eq 1
它返回正確的項目從列表中。
現在顯然這個列表更可能是一個數據庫結構。數據將使用一些ORM檢索並返回到Web API服務。
我不使用實體框架(我不能因爲遺留系統)。
在這種情況下,我將如何使用Web API?如何翻譯url參數,以便過濾器由負責數據訪問的層應用?
如果你的數據庫沒有LINQ提供者,你需要翻譯ODataQueryOptions。從這篇博文開始:http://blogs.msdn.com/b/webdev/archive/2013/02/25/translating-odata-queries-to-hql.aspx –
明白了。您指出我與您的LINQ提供商正確的方向。我發現我可以用我們正在使用的ORM(OpenAccess)輕鬆完成。更多信息:http://documentation.telerik.com/openaccess-orm/developers-guide/using-web-services/asp.net-web-api/developer-guide-wcfservices-web-api-expose-oacontext – Sam
@Sam你可以發表你的評論作爲答案嗎?否則,即使問題得到解決,問題似乎仍然很活躍。 –