NHibernate CreateSQLQuery -> Словарь <int, int> - PullRequest
1 голос
/ 19 января 2012

Я склонен использовать что-то вроде этого:

return NHibernateSession.Current.CreateSQLQuery
(
@"
    some sql
"
)
.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(someviewmodel)))
.List<someviewmodel>();

чтобы отобразить мой вывод sql в модель представления. Достаточно ли просто добиться того же отображения в словарь при использовании CreateSQLQuery, который выбрасывает два столбца int?

Спасибо.

1 Ответ

2 голосов
/ 20 января 2012

В основном вам нужно создать свой собственный преобразователь и указать его в вызове 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...