您好 我想如何在nhibernate中有一个特定的输出
var hql = @"select t1.info1, t2.info2
from table1 t1
left outer join t1.table2 t2";
var variable = session.CreateQuery(hql).List();
该查询返回包含另一个数组的对象数组。 即:在第一行中,info1可以通过变量[0] [0]检索 在同一行中,info2可以通过变量[0] [1]
检索我知道我可以创建一个像
这样的新类class SpecificQuery
{
public int info1;
public int? info2
}
and then call :
session.CreateQuery(hql)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(SpecificQuery))).List();
但是每次我想要特别的回报时,我都不想创建一个特定的类。
有人知道该问题的解决方案吗? 例如,IList< Dictionnary< string,object>> [] 在这种情况下,info1的第一行可以通过variable0检索(如果是变量[0] [0]
由于
答案 0 :(得分:4)
NHibernate提供了可以在这里使用的Tuple类:
var hql = @"select t1.info1 as First, t2.info2 as Second
from table1 t1
left outer join t1.table2 t2";
// instead of Tuple<String, decimal> you can use other types of course
var variable = session.CreateQuery(hql)
.SetResultTransformer(new AliasToBeanResultTransformer(
typeof(NHibernate.Linq.Tuple<String, decimal>)))
.List<NHibernate.Linq.Tuple<String, decimal>>();
然后,您将使用
访问这些项目variable[0].First
variable[0].Second
答案 1 :(得分:4)
您可以使用AliasToEntityMapResultTranformer
session.CreateQuery(hql)
.SetResultTransformer(Transformers.AliasToEntityMap).List();
这将返回一个IDictionary对象列表。