Diego Lazzarino - IT Blog

Al mondo ci sono 10 tipi di persone: chi conosce il sistema binario e chi no
posts - 29, comments - 133, trackbacks - 192

NHibernate ResultTransformer

Problema
Trasformare un resultset generico in una lista tipizzata di DTO (quindi non una entity del Domain Model).

Soluzione
Utilizzare ResultTransformer di NHibernate. 
Quest'interfaccia consente di specificare una classe di output sulla quale verrà "mappatio" il resultset.

Esempio

File di mapping
  1.    <sql-query name="GetCashFlowMainData">
  2.        
  3.         <return-scalar column="Id" type="Int32" />
  4.         <return-scalar column="ReportType" type="Int32" />
  5.         <return-scalar column="RepGroup1" type="Int32" />
  6.         <return-scalar column="RepGroup2" type="Int32" />
  7.         .......  
  8.  
 
Snippet codice
  1. IQuery query = ((IUnitOfWorkExtended)UnitOfWork).GetNamedQuery("GetCashFlowMainData");
  2.  
  3. query.SetInt32("IdReport", idReport);
  4. query.SetInt32("DayFrequency", dayFrequency);
  5. query.SetDateTime("StartDate", startDate);
  6. query.SetInt32("PeriodNumber", periodNumber);
  7.  
  8. query.SetResultTransformer(Transformers.AliasToBean(typeof (CFRptCashFlowDTO)));
  9.  
  10. IList<ICFRptCashFlowDTO> result = quey.List<ICFRptCashFlowDTO>();
     


Diego

Print | posted on venerdì 11 aprile 2008 9.47 | Filed Under [ NHibernate ]

Powered by: