次はコレクションに関数を生やします。
引数つけると何故か成功しなかったので引数無しで…。
using System.Web.Http; using System.Web.OData.Builder; using System.Web.OData.Extensions; // MapODataServiceRouteに必要 using WebApplication5.Controllers; namespace WebApplication5 { public static class WebApiConfig { public static void Register(HttpConfiguration config) { var b = new ODataConventionModelBuilder(); b.EntitySet<Person>("People"); // EntityTypeのCollectionに関数を生やす var addFunction = b.EntityType<Person>() .Collection .Function("Add"); addFunction.Returns<double>(); config.MapODataServiceRoute( "ODataRoute", "odata", b.GetEdmModel()); } } }
メソッドもコントローラに普通に定義
[HttpGet] public IHttpActionResult Add() { return Ok(13.0); }
呼び出し側は、Peopleに直接メソッドが生えてる。
var c = new Container(new Uri("http://localhost:7650/odata")); var answer = c.People .Add() .GetValue(); Console.WriteLine(answer);