ADO.NET Data Services フレームワークがサポートしているサービス操作を使用すると、データ サービスでは他のすべての ADO.NET Data Services リソースと同様に、URI で識別されるサーバーでメソッドを公開できます。パラメータは、URI クエリ文字列を使用してサービス操作メソッドに渡すことができます。
サービス操作は、System.Data.Services.DataService クラスを継承し、データ サービス自体を表すクラスにメソッドを追加することによって作成します。
次のコードは、指定した都市内のすべての顧客を計算するサービス操作を作成します。this.CurrentDataSource
の参照によってデータベース セッションへのアクセスが提供されることに注目してください。
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));
}
}
サービス操作を呼び出すには、メソッドの引数に直接マッピングされているクエリ文字列パラメータを含む URI 形式を使用します。たとえば、http://host/northwind.svc/CustomersByCity?city=London
のようにします。
上記のサービス操作の例では、呼び出し元が要求したデータは直接返されません。その代わり、型 IQueryable<T> のクエリ オブジェクトが返されます。IQueryable<T> は、.NET Framework v3.5 SP1 の統合言語クエリ (LINQ) 機能によってサポートされています。データの代わりにクエリを返すことで、ADO.NET Data Services フレームワークでは、フィルタ、並べ替え、ページングなどの操作を提供できます。たとえば、http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName
のクエリは並べ替えオプションを含むクエリを作成し、CompanyName
で並べ替えられた結果を返します。
サービス操作に制約を適用して、追加の演算子を作成できないようにするには、クエリ オブジェクトの代わりに操作結果を返します。上記の例では、メソッドの戻り値の型は IEnumerable<T> であるか、メソッドが結果を返さない場合には void である必要があります。
参照
概念
ADO.NET Data Services のクエリ オプション
ADO.NET Data Services のシステム クエリ オプション