迷恋弦哥

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年7月27日

摘要: Using Named Queries使用命名查询 和SQL一样,不应该在HQL中混有业务逻辑.那样的话代码将没有可读性,而且查询几乎是不可能执行单元测试.本节介绍如何将HQL查询迁移出我们的代码,以提高可读性和可测试性,甚至于通过预编译查询提高程序性能.步骤1. 完成本章简介中的通用步骤.将新建的控制台程序命名为NamedQueryExample.2. 添加名为GetBookByISBN.hbm.xml的映射文档,别忘了将其设置为嵌入式资源,代码如下:View Code <?xml version="1.0" encoding="utf-8" ? 阅读全文
posted @ 2012-07-27 11:39 迷恋弦哥 阅读(377) 评论(4) 推荐(0) 编辑

2012年7月26日

摘要: Using MultiQuery使用综合查询(MultiQuery) 就像使用MultiCriteria可以将几个ICriteria和QueryOver查询组合到一个数据库交互中一样,我们可以使用MultiQuery来组合几个HQL查询.尤其是在数据库和应用程序分布在不同的机器上的情况下,与数据库的每次交互的开销都是非常大的.因此,以这种方式将查询结合,可以很大程度上提高应用程序的性能.本节介绍如何使用一个MultiQuery查询来获取产品数和产品结果的页面.步骤1. 完成本章简介中的通用步骤.2. 在Queries类中,添加下面的结构:View Code public struct Pag. 阅读全文
posted @ 2012-07-26 16:13 迷恋弦哥 阅读(332) 评论(2) 推荐(0) 编辑

摘要: Using the Hibernate Query Language使用Hibernate查询语言(HQL) 到目前为止,我们已经讨论了使用NHibernate的Criteria API和她的新的QueryOver语法的各种查询.NHibernate提供了另外一个更强大的方法,名为Hibernate Query Language,一个融合了熟悉的sql样式的语法与面向对象思想的特定于领域的语言.本节介绍如何使用HQL完成相同的查询.步骤1. 完成本章简介中的通用步骤.将新建的控制台程序命名为HQLExample. 2. 添加名为NameAndPrice.hbm.xml的映射文档,别忘了将其设. 阅读全文
posted @ 2012-07-26 14:36 迷恋弦哥 阅读(279) 评论(0) 推荐(0) 编辑

2012年7月25日

摘要: Using MultiCriteria使用多条件(MultiCriteria) 为了显示大量的表单和web页面,我们需要运行好几个查询. 例如,将查询结果一次显示在一个页面里是很正常的,这通常需要两个查询.第一个统计所有有效的结果,第二个,只获取10个/20个结果的数据.MultiCriteria使得我们可以将这两个查询整合到一次数据库交互,以提高应用程序的性能.本节介绍如何使用MultiCriteria去获取products的一个分页的结果集.准备1. 完成本章简介中的通用步骤.2. 在Queries类中,添加下面的结构:View Code public struct PageOf<T 阅读全文
posted @ 2012-07-25 14:49 迷恋弦哥 阅读(301) 评论(1) 推荐(0) 编辑

摘要: Using QueryOver projections and aggregates使用QueryOver投影和聚合 在一些情况下,只需要某个实体的特定属性.而其他情况下,却可能需要一个聚合函数的结果,比如average或count.本节介绍QueryOver查询中的投影和聚合.步骤1. 完成本章简介中的通用步骤.2. 在Queries类中,添加下面的方法:View Code public IEnumerable<NameAndPrice> GetMoviePriceList(){ return _session.QueryOver<Movie>() .Select(m 阅读全文
posted @ 2012-07-25 13:35 迷恋弦哥 阅读(285) 评论(0) 推荐(0) 编辑

摘要: Using QueryOver使用QueryOver步骤1. 完成本章简介中的通用步骤.2. 在Queries类中,添加下面的方法:View Code public IEnumerable<Movie> GetMoviesDirectedBy(string directorName){ return _session.QueryOver<Movie>() .Where(m => m.Director == directorName) .List();}3. 在Queries类中,添加下面的方法,该方法通过actor name来查询movies:View Code 阅读全文
posted @ 2012-07-25 11:45 迷恋弦哥 阅读(301) 评论(2) 推荐(0) 编辑

摘要: Using Criteria Queries使用条件查询 在上一章中,通过实体的ID来获取这些实体.本节介绍几个基础的条件查询:通过实体的属性来获取实体.步骤1. 完成本章简介中的通用步骤.2. 在Queries类中,添加下面的方法:View Code public IEnumerable<Movie> GetMoviesDirectedBy(string directorName){ return _session.CreateCriteria<Movie>() .Add(Restrictions.Eq("Director", directorNa 阅读全文
posted @ 2012-07-25 11:05 迷恋弦哥 阅读(229) 评论(0) 推荐(0) 编辑

2012年7月24日

摘要: Introduction简介 本章中,除了最后的两个小节示例外,所有的示例开始时都遵照下面的步骤.这些步骤包含了映射模型,配置log4net和NHibernate的通用代码,此外还包含有必要的但是重复的管道代码.1. 完成第一章中的Eg.Core项目.2. 在解决方案中添加一个新的控制台程序.3. 为项目添加App.config文件.4. 依照第二章中的Configuring NHibenate with App.config和Configuring NHibernate Logging小节,在App.config中配置log4net和NHibernate.5. 创建一个名为ExampleD. 阅读全文
posted @ 2012-07-24 16:38 迷恋弦哥 阅读(399) 评论(0) 推荐(0) 编辑

2012年7月16日

摘要: Using NHibernate with TransactionScope通过事务范围来使用NHibernate 与其他系统的可靠集成是挺常见的业务需求.在这些系统报错时,不只本地数据库的事务需要回滚,也许其他的多个事务资源都需要.本节介绍如何使用微软的TransactionScope和NHibernate来达成该目标.准备创建一个控制台应用程序.添加引用:第一章中的Eg.Core项目,NHibernate.dll和NHibernate.ByteCode.Castle.dll.参照Configuring NHibernate with App.config和Configuring log4. 阅读全文
posted @ 2012-07-16 14:08 迷恋弦哥 阅读(277) 评论(0) 推荐(0) 编辑

摘要: Using dictionaries as entities使用字典作为实体 NHibernate中一个鲜为人知的特性是EntityMode.Map. 本节介绍如何使用该特性来持久化实体,而不是使用类.准备为NHibernate创建一个控制台应用程序,步骤如下:1. 创建一个控制台应用程序.2. 添加引用NHibernate.dll,NHibernate.ByteCode.Castle.dll.3. 在Main函数中添加下面的代码:View Code var nhConfig = new Configuration().Configure();var sessionFactory = nhC. 阅读全文
posted @ 2012-07-16 10:30 迷恋弦哥 阅读(331) 评论(0) 推荐(0) 编辑