カスタム ビジネス ロジックは、WCF Data Services のコンテキスト レベル サービス メソッド/関数インポートを使用して、OData エンドポイントに追加できます。これにより、スカラー値、コレクション、またはクエリ可能なコレクションを返すメソッドを作成できます。コード スニペットはJayData.orgからコピーされます
[WebGet]
public Product[] GetCheapProducts()
{
return this.CurrentDataSource
.Products
.OrderByDescending(p => p.Unit_Price)
.Take(5)
.ToArray();
}
[WebGet]
public IQueryable<Product> GetBeverages()
{
return this.CurrentDataSource
.Products
.Where(p => p.Category.Category_Name == "Beverages");
}
[WebGet]
public int AddTwoNumbers(int a, int b)
{
return a + b;
}
ASP.NET Web API を介して OData エンドポイントを発行する場合、それはアクションと呼ばれ、エンティティ セットまたはエンティティのレベルで定義できます。
public class YourController : ODataController
{
[HttpPost]
public string GetFirstArticleTitle([FromODataUri] int key, ODataActionParameters parameters) {
var contains = (string)parameters["contains"] ?? "";
return db.Articles.Where(a => a.Category.Id == key && a.Title.Contains(contains)).Select(a => a.Title).FirstOrDefault() ?? " - ";
}
}