0

複数テーブルクエリの結果のデータ(http://www.breezejs.com/documentation/query-examples#Lookupsを参照)は、私が期待したものとは正確には異なります。(エンティティフィールドの)配列の配列(各テーブルのアイテム)を期待していました。しかし、私が得たのは、一種の配列の配列です。外側の配列は、予想どおり、各テーブルの項目で埋められています。ただし、内部オブジェクトは配列として入力されません。実際には、インデックス付きアイテム(0、1、2、...)のような名前のメンバーがありますが、配列ではないため、lengthまたはforEachを使用できません。これはBreezeのバグですか?

1つのテーブルからアイテムをクエリすると、結果は(エンティティフィールドの)配列として入力されることに注意してください。

これが私のサーバーコードです:

[HttpGet]
public object _Combo()
{
   return new IOrderedQueryable[] { _contextProvider.Context.Company, _contextProvider.Context.Project, _contextProvider.Context.ProjectArea };
}

これが私のクライアントコードです:

entityManager.executeQuery(breeze.EntityQuery.from("_Combo"))
    .then(function (data) {
        var companies = data.results[0];
        //companies is not an array, but does have numbered members!
    }).fail(queryFailed);
4

1 に答える 1

0

「_Combo」コードを見て、どのような「形」を返したいのか完全にはわかりません。ただし、Companies、Projects、ProjectAreasを含むanonタイプの場合は、次のように機能するはずです。サーバーにクライアント側のフィルターを適用する予定がない限り、IQueryableを返す必要はありません。

[HttpGet]
public object _Combo()
{
    return new { Companies = ContextProvider.Context.Company.ToList(), 
                 Projects = ContextProvider.Context.Project.ToList(),  
                 ProjectAreas = ContextProvider.Context.ProjectAreas.ToList() } 

}

これにより、「Companies」、「Projects」、「ProjectAreas」の3つのプロパティを持つオブジェクトを含む1つのアイテムを持つ単一の要素配列が返されます。それぞれが対応するエンティティの配列です。これらのエンティティはすべてentityManagerに追加されます。お役に立てれば。

于 2013-03-13T18:37:58.310 に答える