2013-07-26 54 views
1

當我在一個查詢中調用inlineCount()時,這兩個查詢都由相關屬性進行排序並執行查詢,inlineCount等於傳遞給take() 。例如,下面的查詢返回正確的inlineCount:帶有take(),orderBy和inlineCount的Breezejs錯誤

testFunc = function() { 
     EntityQuery.from('Residents')      
       .take(10)      
       .inlineCount() 
       .using(manager).execute() 
       .then(function (data) { 
        console.log(data.inlineCount, data); //logs correct value      
       }); 
    } 

但是當我添加訂貨到我的查詢,如下所示:

testFuncOrdering = function() { 
    EntityQuery.from('Residents') 
      .orderBy('user.firstName') 
      .take(10) 
      .inlineCount() 
      .using(manager).execute() 
      .then(function (data) { 
       console.log(data.inlineCount, data); //logs 10 
      }); 
} 

的inlineCount爲10,或任何我通過採取

這裏是我的控制器操作:

[HttpGet] 
public IQueryable<UserDetail> Residents() 
{ 
    return _context.Context.UserDetails 
     .Where(x => _aptIds.Contains(x.User.UserDetail.ApartmentComplexId)) 
     .Where(x => x.Discriminator == UserDetail.Resident); 
}  

這個bug似乎相似到一個在1.4.0中修復的bug,但是不是爲inlineCount得到null/undefined,我得到了take值。如有必要,我可以提供我的元數據。任何幫助表示讚賞,謝謝。

回答

3

我已確認您的發現並在內部報告爲缺陷#2493。這裏是我的代表:

首先,我們知道inlineCount至少在一些時間與orderBytake一起工作。下面是從DocCode是通過一個測試:

 
var productQuery = EntityQuery.from("Products" 
    .where("ProductName", "startsWith", "C"); 

var pagedQuery = productQuery 
    .orderBy("ProductName") 
    .skip(5) 
    .take(5) 
    .inlineCount(); 

JSON結果:

 
{ 
    $id: "1", 
    $type: "Breeze.WebApi.QueryResult, Breeze.WebApi", 
    Results: [ 
    {...}, 
    {...}, 
    {...}, 
    {...}, 
    ], 
    InlineCount: 9 
} 

四大產品共9個產品返回了與以「C」開頭的名稱。是的,它仍然工作沒有.skip(5);它返回前5個產品,並再次報告總共9個合格產品。

下面是該查詢生成的URL:

 
http://localhost:47595/breeze/Northwind/Products?$filter=startswith(ProductName,'C') eq true&$orderby=ProductName&$top=5&$inlinecount=allpages 

因此,我們知道微風做正確的事,至少在某些時候:)

到底哪裏出問題了嗎?

看來問題出在orderBy上的相關實體屬性(例如,您的「user.firstName」)。

返回到DocCode,我修改了查詢網址得到OrderDetails,按其相關的Product.ProductNames排序。我沒有爲編寫微風查詢而煩惱。我只是將生成的網址輸入到瀏覽器地址欄中。

這裏是與排序依據的網址:

 
http://localhost:47595/breeze/Northwind/OrderDetails?$orderby=Product/ProductName&$top=5&$inlinecount=allpages 

產生的inlineCount是 ...的take值和實際返回的記錄數。

當我刪除orderBy

 
http://localhost:47595/breeze/Northwind/OrderDetails?$top=5&$inlinecount=allpages 

我們再次獲得5個訂單明細但由此產生的inlineCount是!

休斯頓,我們有一個問題。

1

這已在Breeze v 1.4.1中解決了。