BreezeJS -从多个linq查询到一个对象的结果

本文关键字:一个对象 结果 查询 linq BreezeJS | 更新日期: 2023-09-27 18:11:34

我想知道是否有可能将多个查询的结果,并将它们附加到一个集合对象中,以便breeze进一步查询?

下面是我的意思和使用查找细节作为参考的一个例子:

http://www.breezejs.com/documentation/lookup-lists

WebAPIController:

[HttpGet]
public CollectionDTO Collection() {
    var _regions = _contextProvider.Context.Regions
                     .Select(x => new RegionsDTO { ID = x.ID, Text = x.Text});
    var _territories = _contextProvider.Context.Territories
                     .Join(_contextProvider.ContextRegions,
                           region => region.TerritoryID,
                           territory => territory.ID,
                          (region, territory) => new { region, territory))
                     .Select(x => new TerritoriesDTO { ID = x.ID, Text = x.Text});
    var _categories = _contextProvider.Context.Categories
                     .Select(x => new CategoriesDTO { ID = x.ID, Text = x.Text});
    var collection = new CollectionsDTO {
        Regions = _regions,
        Territories = _territories,
        Categories = _categories
    }
    return collection;
}

dto

public class CollectionsDTO {
    public IEnumerable<RegionsDTO> Regions;
    public IEnumerable<TerritoriesDTO> Territories;
    public IEnumerable<CategoriesDTO> Categories;    
}
public class RegionsDTO {
    public string ID;
    public string Text;
}
public class TerritoriesDTO {
    public string ID;
    public string Text;
}
public class CategoriesDTO {
    public string ID;
    public string Text;
}

我将如何有BreezeJS查询,将为我提供:

  • 所有具有ID和Text属性的区域列表
  • 所有以字母C开头的具有ID和Text属性的领土列表
  • 所有类别的列表只选择按ASC顺序排序的文本属性?

这样的东西可以工作吗?

    var queryRegion = breeze.EntityQuery
                            .from("Collection")
                            .select("Region.ID, Region.Text")
    var queryTerritory = breeze.EntityQuery
                            .from("Collection")
                            .Where("Territory.Text", FilterQueryOp.StartsWith, 'C') 
                            .select("Territory.ID, Territory.Text")

BreezeJS -从多个linq查询到一个对象的结果

这不起作用,最重要的是因为控制器端点不返回IQueryable

将"查找"绑定到由单个端点交付的单个对象的要点是将获取不同类型的许多小对象所需的许多请求减少到一个请求。这是一个性能优化。

在我看来,你想做的事似乎与我的意图相悖。

我认为您最好为目标类型暴露单独的IQueryable端点并单独查询它们。