我倾向于使用这样的东西:
return NHibernateSession.Current.CreateSQLQuery
(
@"
some sql
"
)
.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(someviewmodel)))
.List<someviewmodel>();
将我的sql输出映射到viewmodel。在使用CreateSQLQuery喷出两个int列时,实现与Dictionary相同的映射是否非常简单?
感谢。
答案 0 :(得分:2)
您基本上需要创建自己的变换器并在SetResultTransformer
调用中指定它。
它可能看起来像这样:
public class CustomDictionaryTransformer : IResultTransformer
{
public object TransformTuple(object[] tuple, string[] aliases)
{
KeyValuePair<int, int> result = new KeyValuePair<int, int>();
for (int i = 0; i < tuple.Length; i++)
{
string alias = aliases[i];
var val = new KeyValuePair<int, int>();
if (alias == "key") result.Key = (int)tuple[i];
else result.Value = (int)tuple[i];
}
return result;
}
public IList TransformList(IList collection)
{
return collection;
}
}