Несколько типов возврата из NHibernate - PullRequest
0 голосов
/ 27 июля 2010

Ранее я задавал этот вопрос: Петля в MySql, или альтернатива? Я получил отличный ответ, и он работает. Теперь в моем приложении я использую NHibernate (в C # .NET 3.5) в качестве DAL. Я действительно не знаю, как обращаться с несколькими типами возвращаемых данных, поэтому я попробовал следующее:

    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>();

Это работало с aList. Но когда я добавляю еще один «AddIdentity» для tableB, он умирает, когда попадает в часть aList, потому что это неправильный тип объекта. Теперь я предполагаю, что могу просто выполнить команду linq WHERE в этом списке, чтобы получить типы для каждого (но я не знаю, как), и после этого, как мне отличить два экземпляра tableB, которые я получу в строке?

Желательно, чтобы я закончил с 3 списками (tableA, tableB, tableB), где строки являются встроенными, поэтому aList [4] будет такой же строкой результата, что и bList1 [4] и bList2 [4].

Спасибо:)

1 Ответ

0 голосов
/ 27 июля 2010

Я считаю, Multi Query - это решение, которое вы ищете.

...