[英]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.