ObjectQuery作为ESQL中的参数

时间:2011-11-20 21:55:45

标签: .net entity-framework entity-sql objectquery

假设我有2个实体:EntSubEnt,关系为N:1。因此,有导航属性SubEnt.EntsEnt.SubEnt。另外,我定义了一些ObjectQuery:

ObjectQuery<SubEnt> se;

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

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

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

1 个答案:

答案 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();