您的位置:首页 > 其它

Nhibernate在实际项目中的使用

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



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

文档地址:/article/6948025.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层中的方法就可以了,需要注意的是“级联操作”是一个比较难的地方。







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐