2010-07-27 4 views
0

Plus tôt, j'ai posé cette question: Loop in MySql, or alternative? J'ai obtenu une bonne réponse et cela fonctionne. Maintenant, dans mon application, j'utilise NHibernate (en C# .NET 3.5) comme DAL. Je ne sais pas vraiment comment traiter plusieurs types de retour, donc j'ai essayé ce qui suit:Plusieurs types de retour de NHibernate

var session = NHibernateHelper.GetCurrentSession(); 
      IQuery query = session.CreateSQLQuery(@"SELECT * FROM tableA AS A 
                LEFT JOIN tableB AS ctrl1 ON (A.controlID = ctrl1.controlID AND ctrl1.controlOptionType = ? AND ctrl1.controlOptionValue = ?) 
                LEFT JOIN tableB AS ctrl2 ON (A.controlID = ctrl2.controlID AND ctrl2.controlOptionType = ? AND ctrl2.controlOptionValue = ?)") 
                    .AddEntity(typeof(nodecontrol)); 



      IList<tableA> aList = query.List<tableA>(); 
      IList<tableB> bList = query.List<tableb>(); 

Cela a fonctionné avec aList. Mais quand j'ajoute un autre "AddIdentity" pour la tableB il meurt quand il arrive à la partie aList parce que c'est le mauvais type d'objet. Maintenant, je suppose que je peux juste faire un linq WHERE sur cette liste pour obtenir les types pour chacun (mais je ne sais pas comment), et après cela, comment puis-je différencier des deux instances de tableB que je vais obtenir par ligne? Je préférerais finir avec 3 listes (tableA, tableB, tableB) où les lignes sont en ligne, ainsi aList [4] sera la même ligne de résultat que bList1 [4] et bList2 [4].

Merci :)

Répondre

Questions connexes