自分用走り書きメモ
やり方はいろいろあるけれど
var b = new ODataConventionModelBuilder(); b.EntitySet<HogeEntity>("Hoges"); // HogesControllerにアクセスがいくようになる config.Routes.MapODataRoute("odata", "odata", b.GetEdmModel());
みたいにして、メタデータは組み立てておいてControllerはODataControllerを継承してGetメソッドを以下のようにするのがよさげ。
namespace SampleApp.Controllers { public class HogesController : ODataController { protected override void Initialize(System.Web.Http.Controllers.HttpControllerContext controllerContext) { base.Initialize(controllerContext); // なんか初期化しましょう } // ODataのクエリオプションは引数で受ける(TopやSkipとかが使える) public PageResult<HogeEntity> Get(ODataQueryOptions<HogeEntity> options) { var results = データを取得する(); return new PageResult<LogData>( results, データに続きがあるなら続きを取得するためのURL, トータルデータ件数); } protected override void Dispose(bool disposing) { // コネクションとかは切りましょう } } }
PageResult