ObjectQuery как параметр в ESQL - PullRequest
0 голосов
/ 21 ноября 2011

Предположим, у меня есть 2 объекта: Ent и SubEnt с отношением N: 1.Итак, есть навигационные свойства SubEnt.Ents и Ent.SubEnt.Кроме того, у меня определено несколько объектов ObjectQuery:

ObjectQuery<SubEnt> se;

Как создать запрос ESQL, который выбирает все объекты из Ent, которые имеют Ent.SubEnt из se?Примерно так:

SELECT VALUE it FROM Ent WHERE Ent.SubEnt IN @p

Где @p == se.Это похоже на вложенный запрос.Но этот синтаксис неверен, поскольку «поддерживаются только скалярные типы».

1 Ответ

0 голосов
/ 21 ноября 2011

Если у вас есть ObjectQuery, вы не можете передать его обратно в ESQL. Таким образом, вы должны либо написать весь запрос на ESQL без разделителей se, либо работать с самим ObjectQuery. В последнем случае попробуйте что-то вроде:

var query = from e in context.Ents
            join s in se on e.Ent.Id equals s.Id
            select e;

Если ваш пример не является простым упрощением более крупного запроса, вы также можете просто попробовать:

var query = se.SelectMany(s => s.Ents).Distinct();
...