开发者

how to call sql string from nhibernate

i have the following method, at the moment it's return the whole sql string. How would i execute the following.

            using (ITransaction transaction = session.BeginTransaction())
            {
                string sql =
                    string.Format(
   开发者_StackOverflow中文版                     @"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;
            }

// EDIT

here is the final version using criteria

 using (ISession session = NHibernateHelper.OpenSession())
        {
           decimal cost = session
                .CreateCriteria(typeof (ItemCosting))
                .SetProjection(Projections.Max("Cost"))
                .Add(Restrictions.Eq("ItemId", itemId))
                .Add(Restrictions.Le("Qty1", quantity))
                .Add(Restrictions.Ge("Qty2", quantity))
                .UniqueResult<decimal>();
            return cost;
        }


NHibernate only supports reading results from data readers.

You should create your query string as:

string sql = string.Format(
                    @"select MAX(Cost) from item_costings
                      where Item_ID = {0}
                      and {1} >= Qty1 and {1} <= Qty2",
                      itemId, quantity);

And then you execute it with:

string mystring = session
    .CreateSQLQuery(sql)
    .UniqueResult<decimal>()
    .ToString();

Anyway, you are not using NHibernate functionality here at all, you're just unnecessarily wrapping raw ADO.NET.

Why not define an object model and query it using Criteria, HQL or Linq?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜