• 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         }
  • 相关阅读:
    查看系统运行时间和系统当前时间
    根据端口查进程信息
    SELinux深入理解
    nginx配置文件
    centos7 nginx配置httpsCenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx环境部署(二)
    Linux的加密认证功能以及openssl详解
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    理解GRUB2工作原理及配置选项与方法
    在用busybox制作系统过程中遇到的问题
    内核编译选配(VMware篇)
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3748766.html
Copyright © 2020-2023  润新知