我正在尝试构建一个包含大量实体和一些服务操作的 ADO.NET 数据服务。一方面,我创建了一个 ASP.NET Web 应用程序,其中包含一个 ADO.NET 实体数据模型和一个 ADO.NET 数据服务。另一方面,我创建了第二个 ASP.NET Web 应用程序,它具有对数据服务的服务引用。
实体进展顺利,我可以使用 LINQ 检索我想要的数据:
TestEntities entities = new TestEntities(
new Uri("http://localhost/service/service.svc"));
var query = from customer in entities.Customers
where customer.ID == 1234
select customer;
query.ToList();
这行得通。但是,通过服务操作检索信息完全让我无法理解。数据服务端代码:
public static void InitializeService(IDataServiceConfiguration config) {
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
}
[WebInvoke]
public IQueryable<Customer> GetSomeCustomers() {
TestEntities entities = new TestEntities();
return from customer in entities.Customers
where customer.ID > 0 && customer.ID < 20
select customer;
}
当我将服务引用添加到我的客户端项目时,Visual Studio 没有接受任何服务操作。我知道我可以通过构造的 URI 和 DataServiceContext 对象或 TestEntities 对象(在本例中)的 BeginExecute 方法或类似的方法来访问它们,但这不是我想要的。
我想要的是使用 LINQ 来遍历服务操作的返回数据。这可能吗?应该是吧?