ObjectQuery作为ESQL中的参数



假设我有两个实体:EntSubEnt,它们具有N:1的关系。因此,有导航属性SubEnt.EntsEnt.SubEnt。此外,我还定义了一些ObjectQuery:

ObjectQuery<SubEnt> se;

我如何创建ESQL查询,从Ent中选择所有从se中有Ent.SubEnt的实体?像这样:

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

其中@p == se。它看起来像一个嵌套查询。但是这种语法是不正确的,因为"只支持标量类型"。

一旦有了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();

相关内容

  • 没有找到相关文章

最新更新