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

最新更新