0012. ODATA簡易使用備忘錄

ASP.Net MVC 學習筆記

OpenData WebAPI簡易的使用方法

MSDN Odata 條件式:https://msdn.microsoft.com/zh-tw/library/gg309461(v=crm.7).aspx

一、 沒有資料來源的作法 

開啟MVC專案,在Controller底下建立一個空白的WebApi2 的控制器

然後將程式碼打上

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.OData;
using WebMVCAngularjs.Models;

namespace WebMVCAngularjs.Controllers.Single
{
    public class SingleApiController : ApiController
    {
    
        /// <summary>
        /// ODATA 自己產生的List<string>做為資料來源
        /// </summary>
        /// <returns>查詢後的結果</returns>
        [EnableQuery]
        public IQueryable<string> GetStringList()
        {
            //Add Data
            List<string> Myarray = new List<string>();
            for (int i = 0; i < 1000; i++)
                Myarray.Add(i.ToString());

            //Result 
            IQueryable<string> Result = Myarray.AsQueryable<string>();

            if (Result.FirstOrDefault<string>() != null)
                return Result;
            else
                throw new HttpResponseException(HttpStatusCode.Forbidden);
        }
    }
}

就可以啟動開專案,然後輸入Odata條件式搜尋

$top=500 表示回傳前500筆資料

http://本機位置/api/SingleApi/Getstringlist?$top=500

控制器名稱叫SingleApiController    

Getstringlist是[EnableQuery] attribute的呼叫名稱

 

 

二、有資料來源的作法 ,繫節Entity Framework Database

將程式碼貼上

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.OData;
using WebMVCAngularjs.Models;

namespace WebMVCAngularjs.Controllers.Single
{
    public class SingleApiController : ApiController
    {
    
        /// <summary>
        /// ODATA 以資料庫裡的AccountTable 這張表的資料做來源
        /// </summary>
        /// <returns>查詢後的結果</returns>
        [EnableQuery]
        public IQueryable<AccountTable> GetAccount()
        {

            IQueryable<AccountTable> products = new BochenLinTestEntities().AccountTable.AsQueryable<AccountTable>();

            if (products.FirstOrDefault<AccountTable>() != null)
                return products;
            else
                throw new HttpResponseException(HttpStatusCode.Forbidden);
        }
    }
}

 

就可以啟動開專案,然後輸入Odata條件式搜尋

$top=500 表示回傳前500筆資料

http://本機位置/api/SingleApi/GetAccount?$top=1

控制器名稱叫SingleApiController    

GetAccount是[EnableQuery] attribute的呼叫名稱