Nhibernate在实际项目中的使用

    之所以用Nhibernate是因为这个项目最终所用的数据库不确定,可能是sql server也可能是mysql还可能是orancle。而Nhibernate最大的特点就是最后不管使用什么数据库只需要在“方言”(相当于配置文件)中稍微一改就可以了,因为他是数据库访问层,在数据库之上的。

参考的是李永京的“我的Nhibernate之旅”,写的比较详细。而本文的重点是在实际开发中所遇到的问题以及需要注意的问题。

文档地址:http://www.cnblogs.com/lyj/archive/2008/10/10/1308267.html

 

首先,我先介绍一下我在项目中使用Nhibernate的大体流程。

1。当然是创建经典的三层。

2。编写持久化类和映射文件。

3。利用SchemaExport工具,按照持久化类和映射文件自动生成数据库架构(即在数据库中自动生成各种表和表关系)。

4。编写数据访问层和前台的web页面。

 

 

下面再说说我在这个项目中遇到的问题。

1。HQL

 

在Nhibernate中查询推荐用它的专用查询语言“HQL”,语法和linql差不多,如果实在用不习惯也可以用“原生sql”。但是用HQL只能“select”即查询,如果你想要update、delete、insert等操作那就不行了。

 

2。Insert, Update, Delete操作

 

Insert;调用ISession.Save();

Update;调用ISession.Delete();

Delete;改变它的一些属性;调用ISession.Update();

并且这些操作要求ISession使用事务

 

3。NHibernate中映射关系

 

NHibernate中映射关系是NHibernate中的亮点,也是最难掌握的技术。原文作者对这一部分讲解的不多,特别是多对多关系。而我的项目中表之间的关系比较复杂,导致我卡了挺长的时间才解决。

在映射文件中不同映射关系

 

在持久化类中对应如下

 

4。在网站页面中应用Nhibernate

 

这部分原文没有涉及到,并且网上的例子也不是很多。

首先需要配置web.config,把配置信息加进去。

画红线部分就是使用的何种数据库,如果数据库变了,这部分修改即可。

 

然后把需要用到的.dll文件添加到bin目录中。

 

5.在web表现层中的.cs文件中使用Nhibernate

 

首先引用命名空间

然后使用BLL层中的方法就可以了,需要注意的是“级联操作”是一个比较难的地方。

 

posted on 2010-06-03 17:04  学中医的程序员  阅读(139)  评论(0编辑  收藏  举报

导航