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

  • 相关阅读:
    gulp.js基础入门
    正则匹配
    app的meta标签
    移动端UC浏览器和QQ浏览器的部分私有meta属性
    雅虎团队经验:网站页面性能优化的 34条黄金守则
    DOCTYPE声明作用及用法详解
    DOCTYPE 中xhtml 1.0和 html 4.01区别分析
    html doctype 作用介绍
    WebStorm
    JQuery的Ajax跨域请求原理概述及实例
  • 原文地址:https://www.cnblogs.com/suixufeng/p/3336172.html
Copyright © 2020-2023  润新知