NHibernate多次执行相同的查询

问题描述

我只能通过更改一个参数来多次执行NHibernate查询

这是我的代码

  if (channelCount > 1)
                {
                    for (int i = 0; i < channelCount; i++)
                    {
                        int minorderItemFirst = Session.GetNamedQuery("GetMinorderItem")
                            .SetInt32("year",item.Year)
                            .SetString("orderKind",item.OrderKind)
                            .SetInt32("orderNo",item.OrderNo)
                            .SetInt32("orderItem",item.OrderItem)
                            .UniqueResult<int>();

                        
                        //I have minorderItemFirst as int and I need to use it as .SetInt32("orderItem")
                        // Session.GetNamedQuery("GetMinorderItem")
                        //    .SetInt32("year",item.Year)
                        //    .SetString("orderKind",item.OrderKind)
                        //    .SetInt32("orderNo",item.OrderNo)
                        //    .SetInt32("orderItem",minorderItemFirst)
                        //    .UniqueResult<int>(); .... etc as said in for loop
                        // I am ok to increment minorderItemFirst in every next call
    
                    } 

谢谢您的帮助!

解决方法

我有类似的东西,但是我不确定这是理想的解决方案。有人可以解释如何用更少的代码或更优雅的方式实现它吗?

 if (chCount > 1)
                {
                    int[] results = new int[chCount + 1];

                    int firstNumber = Session.GetNamedQuery("GetMinOrderItem")
                        .SetInt32("year",item.Year)
                        .SetString("orderKind",item.OrderKind)
                        .SetInt32("orderNo",item.OrderNo)
                        .SetInt32("orderItem",item.OrderItem)
                        .UniqueResult<int>();

                    results[0] = firstNumber;

                    for (int i = 1; i < chCount; i++)
                    {

                        results[i] = Session.GetNamedQuery("GetMinOrderItem")
                            .SetInt32("year",item.Year)
                            .SetString("orderKind",item.OrderKind)
                            .SetInt32("orderNo",item.OrderNo)
                            .SetInt32("orderItem",results[i - 1])
                            .UniqueResult<int>();
                    }
                }