Это использование BreezeJS и контроллера Breeze для поставщика EF. У меня есть несколько связанных объектов, позвоните им Клиент, у которого есть Навигационное свойство, которое называется «Заказы», которое ссылается на набор объектов заказа для этого клиента.BreezeJS количество расширенных объектов
То, что я хотел бы отобразить в пользовательском интерфейсе, - это сводка счетчиков заказов для набора клиентов, которые соответствуют поиску частичного имени. Я могу сделать это, возвращая все объекты Order, но они довольно большие объекты, и я не хочу возвращать их 100, когда мне это не нужно. Метод inlineCount(), как представляется, всегда дает счет объекта верхнего уровня (Customer), а не суб-Entities, независимо от того, где я помещаю его в оператор.
var predicate = breeze.Predicate.create('displayName', 'contains', partialName);
return this.entityQuery.from('Customers')
.where(predicate)
.orderBy('displayName')
.using(this.manager)
.expand('Orders')
.execute();
документация предполагает, что вы можете приковать расширить в некотором роде, но я до сих пор найти синтаксис, который действителен.
В идеале, я хотел бы применить к Приказам свойство по заказу, названное Status of say 0 (неполное), а затем дать мне только количество соответствующих Соглашений. т. е. вернуть мне все объекты Customer, но для каждого из них есть соответствующий порядок заказов (а не весь список объектов Order и фильтр на стороне клиента).
Поблагодарили бы всех указателей в правильном направлении, если это возможно. Мое настоящее мышление заключается в том, что мне придется создавать собственный метод на серверном контроллере и выполнять там работу, но прежде чем я сделаю предположения о том, что OData может поддерживать, я подумал, что проверил бы здесь какое-то подтверждение.
Очевидно, один вариант должен был бы получить обратно все Клиенты, которые соответствуют 1-й предикат, а затем делать другое запрашивать клиентскую сторону для всех объектов Order, которые имеют соответствующий customer.id и статус 0. До сих пор это довольно медленно, хотя, когда есть много клиентов, соответствующих имени, так что ищите предлагаемые варианты – mcr