NHibernate的多种返回类型

时间:2010-07-27 00:28:02

标签: sql nhibernate nhibernate-mapping

之前我问过这个问题:Loop in MySql, or alternative? 我得到了一个很好的答案,它确实有效。现在在我的应用程序中,我使用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。但是当我为tableB添加另一个“AddIdentity”时,它会在到达aList部分时死掉,因为它的对象类型错误。 现在我假设我可以在该列表上执行linq WHERE以获取每个类型(但我不知道如何),之后,如何区分每行我将获得的两个tableB实例?

最好我想得到3个列表(tableA,tableB,tableB),其中行是内联的,因此aList [4]将是与bList1 [4]和bList2 [4]相同的结果行。

谢谢:)

1 个答案:

答案 0 :(得分:0)

我相信Multi Query是您正在寻找的解决方案。