如何从nhibernate调用sql字符串

如何从nhibernate调用sql字符串,nhibernate,Nhibernate,我有以下方法,目前它返回整个sql字符串。我将如何执行以下操作 using (ITransaction transaction = session.BeginTransaction()) { string sql = string.Format( @"DECLARE @Cost money

我有以下方法,目前它返回整个sql字符串。我将如何执行以下操作

            using (ITransaction transaction = session.BeginTransaction())
            {
                string sql =
                    string.Format(
                        @"DECLARE @Cost money
                        SET @Cost = -1
                        select @Cost = MAX(Cost) from item_costings
                         where Item_ID = {0}
                        and {1} >= Qty1 and {1} <= Qty2
                        RETURN (@Cost)",
                        itemId, quantity);

               string mystring = session
                    .CreateSQLQuery(sql)
                    .ToString();

                transaction.Commit();
                return mystring;
            }
使用(ITransaction transaction=session.BeginTransaction())
{
字符串sql=
字符串格式(
@“申报成本费用
设置@Cost=-1
从项目成本计算中选择@Cost=MAX(成本)
其中,项_ID={0}

和{1}>=Qty1和{1}NHibernate仅支持从数据读取器读取结果

您应该将查询字符串创建为:

string sql = string.Format(
                    @"select MAX(Cost) from item_costings
                      where Item_ID = {0}
                      and {1} >= Qty1 and {1} <= Qty2",
                      itemId, quantity);
string sql=string.Format(
@“从项目成本计算中选择最大(成本)
其中,项_ID={0}

而且{1}>=Qty1和{1}谢谢迭戈,最终采纳了你的建议,并且做得很好。
string sql = string.Format(
                    @"select MAX(Cost) from item_costings
                      where Item_ID = {0}
                      and {1} >= Qty1 and {1} <= Qty2",
                      itemId, quantity);
string mystring = session
    .CreateSQLQuery(sql)
    .UniqueResult<decimal>()
    .ToString();