1

関連するプロパティによって注文し、クエリでテイクを実行するクエリで inlineCount() を呼び出すと、inlineCount は take() に渡された引数と等しくなります。たとえば、次のクエリは正しい inlineCount を返します。

    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);
}     

このバグは 1.4.0 で修正されたバグに似ているようですが、inlineCount の null/undefined を取得する代わりに、テイク値を取得しています。必要に応じて、メタデータを提供できます。どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

3

あなたの発見を確認し、欠陥 #2493 として内部的に報告しました。これが私の再現です:

まず、少なくともある程度の場合はinlineCount動作することがわかっています。以下は、パスする DocCode からのテストです。orderBytake

var productQuery = EntityQuery.from("製品"
    .where("製品名", "startsWith", "C");

var pagedQuery = productQuery
    .orderBy("商品名")
    .skip(5)
    .take(5)
    .inlineCount();

JSON の結果は次のとおりです。

{
  $id: "1",
  $type: "Breeze.WebApi.QueryResult, Breeze.WebApi",
  結果: [
    {...}、
    {...}、
    {...}、
    {...}、
  ]、
  インライン数: 9
}

4 つの製品から、名前が「C」で始まる合計 9 つの製品が返されました。はい、.skip(5);がなくても機能します。最初の 5 つの製品が返され、合計 9 つの適格な製品が再び報告されます。

そのクエリに対して生成された URL は次のとおりです。

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

だから私たちは、Breeze が少なくとも時々正しいことをすることを知っています :)

何がうまくいかないのですか?

関連するエンティティ プロパティ(たとえば、「user.firstName」)に問題があるようですorderBy

DocCode に戻り、クエリ URL を getに変更OrderDetailsし、関連する でソートしましたProduct.ProductNames。私はそよ風のクエリを作成することを気にしませんでした。生成された URL をブラウザーのアドレス バーに入力するだけです。

orderBy を含む URL は次のとおりです。

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

結果inlineCount5です。take値と実際に返されたレコードの数です。

そして、私が削除するとorderBy

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

ここでも 5 つの OrderDetails を取得しますが、結果inlineCount2155です !!!

ヒューストン、問題があります。

于 2013-07-28T06:09:41.667 に答える