Breeze Predicate в подзапросе

У меня есть две сущности, назовем их Альфа и Бета.

Между ними есть отношения один ко многим, так что у Беты есть внешний ключ к Альфе, MyAlphaIdи, таким образом, ссылочное свойство MyAlpha,

У меня есть предикат, созданный для Альфы.

например

var predicateAlpha = new Predicate('name', 'contains', 'somevalue');

Я хочу затем "перенести" это на запрос для бета-версии, где его myAlpha свойство соответствует этому предикату.

например

var predicateBeta = new Predicate('myAlpha', 'in', predicateAlpha);

Я осознаю, что могу построить предикат следующим образом:

var predicateBeta = new Predicate('myAlpha.name', 'contains', 'somevalue');

Моя проблема в том, что я не знаю, что это за предикат. Я не могу просто предвидеть 'myAlpha.' так как он может включать функцию OData, такую ​​как 'concat('somefield', 'someotherfield')',

Любые другие мысли или предложения о том, как я могу этого достичь?

Для меня было бы разумно, чтобы IN принял предикат, который позволяет этому случиться... Я не могу видеть исходный код, принимающий предикат, поэтому я не могу думать, как еще сделать это...

1 ответ

При условии, что Alpha имеет свойство betasвы можете запросить Alphas, используя предикат, и expand Бета-версии, чтобы они тоже были внесены. Затем соберите бета-версии, если они вам нужны, в одном списке:

var query = em.createQuery(predicateAlpha).expand('betas');
var betas = [];
em.executeQuery(query).then(queryResult => {
    queryResult.results.forEach(alpha => {
        betas = betas.concat(alpha.betas);
    });
});
Другие вопросы по тегам