服务操作参数(ADO.NET 数据服务框架)

ADO.NET 数据服务框架支持的服务操作允许数据服务在由 URI 标识的服务器上公开一个方法,与所有其他 ADO.NET 数据服务资源类似,可以使用 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> 的查询对象。.NET Framework 3.5 SP1 版的语言集成查询 (LINQ) 功能支持 IQueryable<T>。通过返回查询而不是数据,ADO.NET 数据服务框架仍可提供筛选、排序和分页等选项。例如,查询 http://host/northwind.svc/CustomersByCity?city=London&$orderby=CompanyName 构成了带有排序选项的查询,并返回按 CompanyName 排序的结果。

若要约束服务操作以便不构成其他运算符,请返回操作的结果而不是查询对象。在上面的示例中,如果该方法不返回结果,则该方法的返回类型将必须为 IEnumerable<T> 或 void。

另请参见

概念

ADO.NET 数据服务查询选项
ADO.NET 数据服务系统查询选项

其他资源

实体数据模型