2010-02-25 8 views
0

J'essaie d'interroger en utilisant Castle et de retourner un tableau typé fort ou IList pour une utilisation ultérieure dans la liaison de données, donc à partir de je lis un ProjectionQuery serait mon meilleur choix, mais comment je transformer ce à une requête de projection:HQLBasedQuery à ProjectionQuery Castle ActiveRecord/NHibernate

 HqlBasedQuery hql = new HqlBasedQuery(typeof(TrackingRule), 
              QueryLanguage.Hql, 
              "SELECT AC.TrackingRule FROM Account_Rule as AC WHERE AC.Account.ID = " + 63); 

Merci à l'avance

Yehia A.Salam

Répondre

0

On dirait que vous essayez juste de retourner une liste d'objets. Les requêtes de projection sont généralement utilisées pour renvoyer uniquement certaines colonnes, ce qui ne semble pas être ce dont vous avez besoin ici.

Vous pouvez obtenir un ArrayList fortement typé avec ce que vous avez:

HqlBasedQuery hql = 
    new HqlBasedQuery(typeof(TrackingRule), QueryLanguage.Hql, 
     "SELECT AR.TrackingRule FROM Account_Rule as AR WHERE AR.Account.ID = " 
      + 63); 
ArrayList resultsList = (ArrayList) ActiveRecordMediator.ExecuteQuery(hql); 

Voici une alternative qui retourne un tableau:

SimpleQuery<TrackingRule> sq = 
    new SimpleQuery<TrackingRule>(
     "SELECT AR.TrackingRule FROM Account_Rule as AR WHERE AR.Account.ID = " 
      + 63); 
TrackingRule [] arrayOfTrackingRules = 
    (TrackingRule []) ActiveRecordMediator.ExecuteQuery(sq);