breeze.js 普通老 sql
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 是否支持此功能的主要原因是我要进行一些非常复杂的查询,要构建一些非常复杂的 whereclause。并弄清楚如何使用他们的 linq-esque 语言构建这些查询 - 目前 - 会花费我没有的宝贵时间。
此外,我想知道 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;
}
请注意,如果您的服务器端方法 returns 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,但您需要 configure it to return JSON.
我正在评估是否应该在我的项目中使用 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 是否支持此功能的主要原因是我要进行一些非常复杂的查询,要构建一些非常复杂的 whereclause。并弄清楚如何使用他们的 linq-esque 语言构建这些查询 - 目前 - 会花费我没有的宝贵时间。 此外,我想知道 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;
}
请注意,如果您的服务器端方法 returns 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,但您需要 configure it to return JSON.