1
基於來自ODataSamples-master odata示例的DynamicEdmModelCreation項目,並遵循問題中收到的幫助 Handle Odata /entityset/key/navigation 我們現在需要公開帶參數的動態Actions和Funcions。爲了支持我們在GetModel做綁定功能功能如下:Handle OData函數參數
var GetSum = new EdmFunction("ns", "GetSum",
new EdmPrimitiveTypeReference(EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Double), false),
false, null, true);
GetSum.AddParameter("param1",
new EdmPrimitiveTypeReference(EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Double),
false));
GetSum.AddParameter("param2",
new EdmPrimitiveTypeReference(EdmCoreModel.Instance.GetPrimitiveType(EdmPrimitiveTypeKind.Double),
false));
model.AddElement(GetSum);
container.AddFunctionImport(GetSum);
,並在SelectAction方法我們就把:
if (odataPath.Segments.Count > 0 &&
odataPath.Segments.Last() is UnboundFunctionPathSegment &&
odataPath.Segments.Last().ToString().Contains("GetSum"))
return "ExecuteFunction";
最後控制器具有
[HttpGet]
[HttpPost]
public IHttpActionResult ExecuteFunction(ODataActionParameters parameters)
{
...
}
現在測試服務:
http://localhost:2900/odata/GetSum(param1=1,param2=2)
一切工作正常,除了參數,他們總是輸入爲空。有什麼我們缺少的支持參數?
的問題是,在我的代碼中的OData模型,操作和功能都像DynamicEdmModelCreation項目一樣動態,所以我無法設置特定於該odata函數的簽名。 – Mao