2012-01-19 49 views
1

我傾向於使用這樣的事情:NHibernate的CreateSQLQuery - >詞典<int, int>

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

我的SQL輸出映射到一個視圖模型。在使用CreateSQLQuery的同時映射到字典時,是否很簡單?

謝謝。

回答

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; 
    } 
} 
+1

感謝。看起來比編寫一個有2個整數的視圖模型更復雜,我暫時做了這個。不管怎麼說,還是要謝謝你。 – cs0815

相關問題