簡體   English   中英

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是否支持此功能的主要原因是,我將要進行一些非常復雜的查詢,並在其中建立一些非常復雜的子句。 並弄清楚目前如何使用其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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM