首页 > 代码库 > 01-04-01【Nhibernate (版本3.3.1.4000) 出入江湖】原生的SQL查询
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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。