0

多表查询的结果数据(参见http://www.breezejs.com/documentation/query-examples#Lookups)并不完全符合我的预期。我期望一个数组(每个表的项目)数组(实体字段)。但是,我得到的是一个排序数组。外部数组 - 正如预期的那样 - 为每个表填充了一个项目。但是,内部对象的类型不是数组。他们确实有成员命名为索引项 (0, 1, 2, ...),但由于它不是数组,所以我不能使用 length 或 forEach。这是微风中的错误吗?

请注意,当我从一个表中查询项目时,结果被键入为数组(实体字段)。

这是我的服务器代码:

[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”代码返回什么“形状”?但如果它是包含公司、项目和 ProjectAreas 的匿名类型,那么以下应该可以工作。除非您计划在服务器上应用客户端过滤器,否则您不需要返回 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”。每一个都是对应实体的数组。所有这些实体都将被添加到 entityManager。希望这可以帮助。

于 2013-03-13T18:37:58.310 回答