我已经多次执行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>();
}
}