与NHibernate和Criteria联盟?

Mat*_*ias 1 c# nhibernate union nhibernate-criteria

与NHibernate和Criteria联盟:

是否可以在Criteria或QueryOver中使用?如果没有,是否有任何其他方法可以在同一个查询中实现两个结果的并集?

Rip*_*ppo 6

即使使用HQL也无法做到这一点.看到这个其他的SO 帖子

一种方法是回退到原始SQL并使用命名查询

<sql-query name="MyQuery">
<![CDATA[
select col1,col2 from table1
union
select col1,colA from table2
]]>
</sql-query>
Run Code Online (Sandbox Code Playgroud)

并使用AliasToBeanResultTransformer将其转换回您的DTO/POCO

var query = Session
  .GetNamedQuery("MyQuery")
  .SetResultTransformer(new AliasToBeanResultTransformer(typeof(MyDto)));
  return query.List<MyDto>();
Run Code Online (Sandbox Code Playgroud)


eul*_*rfx 6

你不能直接建立联盟,但你可以做两个未来的查询并在代码中结合结果:

var resultSet1 = this.Session.CreateCriteria<A>().Future<A>();
var resultSet2 = this.Session.CreateCriteria<B>().Future<B>();
Run Code Online (Sandbox Code Playgroud)

在此之后,当枚举任一结果集时,NHibernate将向数据库发出单个查询,该查询将返回多个结果集.请注意,如果您不使用SQL Server,则数据库可能不支持多个结果集.