[英]breeze.js plain old sql
我正在评估我应该在项目中使用Breeze.js的过程。 我知道Breeze使用某种linq式语言将查询发送到服务器,然后再发送到数据库。 Breeze.js是否允许使用普通的旧sql? 例:
var plain_old_query = EntityQuery.from_plain_old_query('select * from customers where bla bla bla');
manager.executePlainOldQuery(plain_old_query)
实际上,我想知道Breeze是否支持此功能的主要原因是,我将要进行一些非常复杂的查询,并在其中建立一些非常复杂的子句。 并弄清楚目前如何使用其linq式语言构建这些查询将花费我没有的宝贵时间。 我也想知道Breeze.js是否可以与WCF一起使用,因为这几天来我看到的大多数示例都是Web API专用的。 (在我们的项目中,我们已经大量使用WCF)。 感谢社区
Breeze不支持SQL查询语法,但是您可以使用Breeze与支持此功能的端点进行对话。 如果使用withParameters功能,则可以使用从客户端传递的参数在服务器上编写 SQL查询。 例如,您可能有一个服务器端方法:
[HttpGet]
public IQueryable<Customer> CustomersWhoPurchasedProducts(string zipCode, DateTime startDate, DateTime endDate, [FromUri] int[] productIds)
{
var query = ComposeCustomerQueryFromParameters(zipCode, startDate, endDate, productIds);
IQueryable<Customer> results = ExecuteQueryIntoCustomerObjects(query);
return results;
}
请注意,如果您的服务器端方法返回IQueryable<>
,则可以在初始结果返回到客户端之前对其进行更多过滤。 Breeze可以将过滤数据添加到查询中。 因此,您的Breeze客户端可以这样调用服务器方法:
// query with parameters
var query = EntityQuery.from("CustomersWhoPurchasedProducts")
.withParameters({
zipCode: 90210,
startDate: new Date(2014, 1, 1).toISOString(),
endDate: new Date(2014, 4, 1).toISOString(),
productIds: [911, 928, 935, 944]
});
// Add filtering
query = query.where('CompanyName', 'startsWith', 'A');
// Add paging
query = query.skip(20).take(10);
抱歉,我没有WCF示例供您参考。 从概念上讲,它将类似于Web API,但您需要对其进行配置以返回JSON 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.