NHibernate的设计思想和Hibernate的设计思想基本相同,都是为了避免频繁的编写sql脚本,使用面向对象的方式使用hql语句进行查询。
但是在工程布置上和java的工程结构布置还是有一定区别的。
首先说c#项目的建立:一个项目的创建就是一个解决方案,而一个解决方案中可以包含多个子项目,每个子项目又自成一体,如何自项目之间相互调用需要在对应的项目中引入目标项目的解决方案。
具体阐述一下nhibernate项目的搭建过程:
首先我们需要下载nhibernate对应的资源文件 :NHibernate-4.1.1.GA-bin.zip
将该压缩包进行解压得到几个文件夹:
Configuration_Templates:该文件夹中存放了连接不同类型数据库的案例。
NHibernate.license.txt: 该文件夹存放了一个日志文件
Required_Bins:存放nhibernate必须的一些资源文件。
Tests:存放一些项目案例。
将文件部署到工程:
首先为了让我们的vs可以对nhibernate配置文件编写时进行提示,需要将
Required_Bins文件夹下的:
nhibernate-configuration.xsd
nhibernate-mapping.xsd
两个文件,复制到vs安装路径下的 *\Microsoft Visual Studio 10.0\Xml\Schemas文件夹即可。
将对应的nhibernate文件集放到一个解决方案的一个项目中,或者在添加引用的时候在本地进行浏览导入:
然后编写对应的ISession帮助类代码,实体类代码,测试代码等。
abc是临时建立的测试项目,其它的都是建立的类库项目。
和hibernate一样,nhibernate框架的核心文件也是两个:
hibernate.cfg.xml domain.hbm.xml
不同的是在java中我们创建sessionFactory工厂时可以在对应方法中写入配置文件的路径,但是在vs中,不要用,它貌似有更加强大的匹配功能。
但是需要注意的是:哪一个项目允许中用到了hibernate.cfg.xml 文件,就必须将hibernate.cfg.xml 文件所在项目的资源导入到该项目。并且将hibernate.cfg.xml 的文件属性设置为始终复制。
domain.hbm.xml配置文件和我们的实体类放在一个位置即可。
将两个文件进行关联:
assembly属性写domain.hbm.xml文件所在项目的命名空间。项目运行时会根据配置自动到该项目下去找对应的文件。
domain.hbm.xml文件编写
这里要注意
assembly="NHibernateDomain"
namespace="NHibernateDomain"
两个属性名称:是告诉项目到哪个地方去找我们的文件。
assembly和上述相同。
namespace是写明我们的实体类在哪个项目下,如果有文件夹,还要指明哪个文件夹下,用.分隔开。
eg:NhibernateDomain.entity
基本匹配完成。