我有一個Web API從SQL存儲過程公開ODATA。我想使用像/ odata/firmhierarchy(225)這樣的url來傳遞225到存儲過程的參數中。它只是告訴我它找不到匹配的資源。它擊中控制器,只是跳過該方法。思考?OData Web API路由
在webapiconfig
private static IEdmModel GenerateEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Employee>("Employees");
builder.EntitySet<Employee>("FirmHierarchy");
return builder.GetEdmModel();
}
語境:
public virtual ObjectResult<Employee> sp_EmployeeHierarchy(Nullable<int> managerEmpID)
{
var managerEmpIDParameter = managerEmpID.HasValue ?
new SqlParameter("ManagerEmpID", managerEmpID) :
new SqlParameter("ManagerEmpID", 0);
return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<Employee>("sp_EmployeeHierarchy @ManagerEmpID", managerEmpIDParameter);
}
控制器中唯一的方法:
[Queryable]
public IQueryable<Employee> GetFirmHierarchy()
{
return db.sp_EmployeeHierarchy(225).AsQueryable();
//return SingleResult.Create(db.Employees.Where(employee => employee.EmpId == key));
}
難道你不能從請求URL傳遞225到控制器方法嗎? – 2014-10-09 10:53:26
是的,這是我的問題。我把桌子放了下來,把桌子弄平了,然後就這樣做了。但我想知道如何用一個參數來調用sp,並用odata傳遞它。 – Jman 2014-10-10 12:30:52