服務作業參數 (ADO.NET 資料服務架構)
ADO.NET 資料服務架構所支援的服務作業允許資料服務在 URI 所識別的伺服器上公開 (Expose) 方法,如同所有其他 ADO.NET 資料服務資源。然後,您就可以使用 URI 查詢字串,將參數傳遞至此服務作業方法。
您可以透過將方法加入至繼承 System.Data.Services.DataService 類別 (Class) 而且代表資料服務本身的類別,建立服務作業。
下列程式碼會建立計算指定之城市中所有客戶的服務作業。請注意,this.CurrentDataSource
的參考會提供資料庫工作階段 (Session) 的存取權。
public class Northwind : DataService<NorthwindEntities>
{
[WebGet]
public IQueryable<Customer> CustomersByCity(string city)
{
if (string.IsNullOrEmpty(city))
{
throw new ArgumentNullException("city",
"You must provide a city name argument");
}
return this.CurrentDataSource.Customers.Where("it.City = @city",
new ObjectParameter("city", city));
}
}
若要叫用 (Invoke) 此服務作業,請使用 URI 格式搭配直接對應至方法引數的查詢字串參數。例如,http://host/northwind.svc/CustomersByCity?city=London
。
上述服務作業範例不會直接傳回呼叫端所要求的資料。不過,此服務作業會傳回 IQueryable<T> 型別的查詢物件。.NET Framework v3.5 SP1 的 Language Integrated Query (LINQ) 功能支援 IQueryable<T>。透過傳回查詢而非資料,ADO.NET 資料服務架構仍然可以提供篩選、排序和分頁等選項。例如,查詢 http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName
會組合查詢與排序選項,並且傳回依據 CompanyName
所排序的結果。
若要限制服務作業,避免組合其他運算子,請傳回作業的結果而非查詢物件。在上述範例中,如果此方法沒有傳回結果,則方法的傳回型別必須是 IEnumerable<T> 或虛值 (Void)。
另請參閱
概念
ADO.NET 資料服務查詢選項
ADO.NET 資料服務系統查詢選項