• 01-04-01【Nhibernate (版本3.3.1.4000) 出入江湖】原生的SQL查询


    Nhibernate 支持原生的SQL查询 :

     1         /// <summary>
     2         /// 使用原生的SQL查询
     3         /// </summary>
     4         /// <param name="datetime"></param>
     5         /// <returns></returns>
     6         public IList<Customer> GetCustomersByDateTimeUsingSql(string datetime)
     7         {
     8             IList<Customer> resuCustomers = null;
     9 
    10             ISession session = _sessionManager.GetSession();
    11             ITransaction transaction = session.BeginTransaction();
    12 
    13             ;
    14             try
    15             {
    16                 //方式一:直接拼装SQL语句
    17                 //String sql = String.Format("select distinct CustomerAlias.* " +
    18                 //                           " from Customer CustomerAlias inner join [Order] " +
    19                 //                           " on CustomerAlias.CustomerId = [Order].CustomerId" +
    20                 //                           " where [Order].OrderDate >='{0}';", datetime);
    21                 ////用原生的SQL语句查询时,用AddEntity拼装实体类
    22                 //resuCustomers = session.CreateSQLQuery(sql).AddEntity("CustomerAlias", typeof(Customer)).List<Customer>();
    23 
    24 
    25                 //方式二:使用查询参数
    26                 String sqlusingParameter = String.Format("select distinct CustomerAlias.* " +
    27                                                          " from Customer CustomerAlias inner join [Order] " +
    28                                                          " on CustomerAlias.CustomerId = [Order].CustomerId" +
    29                                                          " where [Order].OrderDate >=:paraDatetime And CustomerAlias.Age=:paraAge;");
    30                 //用原生的SQL语句查询时,用AddEntity拼装实体类
    31                 resuCustomers = session.CreateSQLQuery(sqlusingParameter).AddEntity("CustomerAlias", typeof(Customer))
    32                     .SetString("paraDatetime", datetime)
    33                     .SetInt32("paraAge", 10)
    34                     .List<Customer>();
    35 
    36                 transaction.Commit();
    37             }
    38             catch (Exception)
    39             {
    40                 transaction.Rollback();
    41                 throw;
    42             }
    43             finally
    44             {
    45                 //如果已经打开了支持延迟,当外部用到延迟加载属性,
    46                 //session早已关闭,所以会抛出异常。
    47                 session.Close();
    48             }
    49 
    50             return resuCustomers;
    51         }
  • 相关阅读:
    Swift学习——格式控制符和元组流程控制(二)
    boost::string 例题1
    钱币兑换问题
    我心目中的北京大学:从薛定格到王恩哥
    2.1-Java语言基础(keyword)
    【C语言天天练(十)】结构体
    JVM GC调优一则--增大Eden Space提高性能
    C++的一种业务分发方案(另类的工厂模式)
    Eclipse使用方法和技巧二十六:浅谈快捷键
    linux-shell脚本命令之grep
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3748766.html
Copyright © 2020-2023  润新知