我試圖通過URI來進行基於odata的基於rest的服務調用。通過odata通過Web API和實體框架查詢數據
我有一個ADO.NET實體數據模型,它映射到SQL後端的其中一個表。在我的「Models」文件夾下創建必要的edmx文件
然後,我使用「Web API 2 Odata Controller with actions,using Entity Frameowrk」選項創建了一個標記爲spcontrol的控制器。然後我設置了模型類和Data上下文類,然後使用Visual Studio腳手架完成剩下的工作。控制器的前幾行看起來像這樣...
public class spcontrolController : ODataController
{
private Entities db = new Entities();
// GET odata/spcontrol
[Queryable]
public IQueryable<Database_table_Name> Getspcontrol()
{
return db.Database_table_Name;
}
// GET odata/spcontrol(5)
[Queryable]
public SingleResult<Database_table_Name> GetDatabase_table_Name([FromODataUri] int key)
{
return SingleResult.Create(db.Database_table_Name.Where(Database_table_Name=> Database_table_Name.ID == key));
}
然後它繼續執行PUT,POST,PATCH,DELETE方法。在我WebApiConfig.cs文件,我設置以下行
using System.Web.Http.OData.Builder;
using resttest.Models;
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Database_table_Name>("spcontrol");
config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
最後,我想查詢表的OData。所以我的URL看起來沿
http://testsite:8012/odata/spcontrol?$top=5
不過線的東西,這個調用不返回任何數據,但只返回下面的文本
{
"odata.metadata":"http://localhost:33421/odata/$metadata#spcontrol","value":[
]
}
我怎樣才能獲得SQL表中的實際值?我究竟做錯了什麼?
如果網址是http會發生什麼://測試網站:8012 /的OData/spcontrol(1 ),其中1是關鍵。 –
只是「無法找到網頁」消息 – prawn