BreezeJs 导航 属性 计数
BreezeJs Navigation Property Count
我刚开始使用 BreezeJS,觉得它很棒。它为我节省了很多后端 'plumbing' 代码,这就是我首先研究它的原因。我希望能够做的一件事是显示一些帐户的列表和他们的联系人数量。目前我正在使用下面的代码,联系人字段是 EF6 中的导航 属性。这段代码的问题是,当我真正需要的只是计数时,我正在下载每个帐户(数千个)的所有联系人。理想情况下,我希望我的 select 声明是这样的 '.select('AccountID,AccountName, Contacts.Count()')' 但我认为 OData/BreezeJS 不支持这一点。大声思考也许解决方案是创建另一个名为 AccountsWithContactCounts 和 return 自定义 class 的 WebService 方法,但理想情况下,如果可以在 breezejs客户端。
欢迎提出任何想法,如果这是一个基本问题,我们深表歉意。
breeze.EntityQuery.from('Accounts')
.where(pred)
.select('AccountID,AccountName, Contacts')
.orderBy(orderbyClause(orderBy, orderByReverse))
.skip(currentPage * pageItems)
.take(pageItems)
.noTracking()
.using(breezemanager).execute()
.then(function (response) {
console.log(response.results.length + ' entities retrieved');
$scope.items = response.results;
})
.catch(function (error) {
console.log(error.message);
})
.finally(function () {
});
我的 breeze 服务如下所示:
[HttpGet]
public IQueryable<Account> Accounts()
{
return _contextProvider.Context.Accounts;
}
史蒂夫确认答案是在 Breeze 控制器上创建一个新方法
[HttpGet]
public IQueryable<object> AccountsSummary()
{
return from t in _contextProvider.Context.Accounts
select
new
{
t.AccountID,
t.AccountName,
ContactsCount = t.Contacts.Count()
};
}
我刚开始使用 BreezeJS,觉得它很棒。它为我节省了很多后端 'plumbing' 代码,这就是我首先研究它的原因。我希望能够做的一件事是显示一些帐户的列表和他们的联系人数量。目前我正在使用下面的代码,联系人字段是 EF6 中的导航 属性。这段代码的问题是,当我真正需要的只是计数时,我正在下载每个帐户(数千个)的所有联系人。理想情况下,我希望我的 select 声明是这样的 '.select('AccountID,AccountName, Contacts.Count()')' 但我认为 OData/BreezeJS 不支持这一点。大声思考也许解决方案是创建另一个名为 AccountsWithContactCounts 和 return 自定义 class 的 WebService 方法,但理想情况下,如果可以在 breezejs客户端。
欢迎提出任何想法,如果这是一个基本问题,我们深表歉意。
breeze.EntityQuery.from('Accounts')
.where(pred)
.select('AccountID,AccountName, Contacts')
.orderBy(orderbyClause(orderBy, orderByReverse))
.skip(currentPage * pageItems)
.take(pageItems)
.noTracking()
.using(breezemanager).execute()
.then(function (response) {
console.log(response.results.length + ' entities retrieved');
$scope.items = response.results;
})
.catch(function (error) {
console.log(error.message);
})
.finally(function () {
});
我的 breeze 服务如下所示:
[HttpGet]
public IQueryable<Account> Accounts()
{
return _contextProvider.Context.Accounts;
}
史蒂夫确认答案是在 Breeze 控制器上创建一个新方法
[HttpGet]
public IQueryable<object> AccountsSummary()
{
return from t in _contextProvider.Context.Accounts
select
new
{
t.AccountID,
t.AccountName,
ContactsCount = t.Contacts.Count()
};
}