我指的是http://odata.github.io/RESTier/#03-01-Operations如何创建一个接受输入并返回对象列表的自定义方法。
这是我的自定义方法
[HttpGet]
[ODataRoute("Locations/PointLoc.Data.GetLocationsByMarketId()")]
public IHttpActionResult GetLocationsByMarketId()
{
var database = new Database();
var locations = database.Locations.GetAllLocationsByMarket(1);
return Ok(locations);
}
以下是我在DbDomain中设置的方法
protected EdmModel OnModelExtending(EdmModel model)
{
var ns = model.DeclaredNamespaces.First();
var location = model.FindDeclaredType(ns + "." + "Location");
var locations = EdmCoreModel.GetCollection(location.GetEdmTypeReference(isNullable: false));
var getLocationsWithMarketId = new EdmFunction(ns, "GetLocationsWithMarketId", locations, true, null, false);
getLocationsWithMarketId.AddParameter("bindingParameter", locations);
model.AddElement(getLocationsWithMarketId);
return model;
}
无法让它发挥作用。继续得到OData Uri错误
'位置/ PointLoc.Data.GetLocationsByMarketId()'关于行动' GetLocationsByMarketId'在控制器' PointLoc'不是有效的OData路径模板。请求URI无效。由于细分'地点'指的是一个集合,它必须是请求URI中的最后一个段,或者必须后跟一个可以绑定到它的函数或动作,否则所有中间段都必须引用单个资源。
想通过" / Locations / GetLocationsByMarketId"访问Odata。怎么做?