假设我有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。 它看起来像一个嵌套查询。但是这种语法不正确,因为“只支持标量类型”。
答案 0 :(得分:0)
一旦有了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();