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

  • 相关阅读:
    cf B. Sereja and Suffixes
    cf E. Dima and Magic Guitar
    cf D. Dima and Trap Graph
    cf C. Dima and Salad
    最短路径问题(floyd)
    Drainage Ditches(网络流(EK算法))
    图结构练习—BFSDFS—判断可达性(BFS)
    Sorting It All Out(拓扑排序)
    Power Network(最大流(EK算法))
    Labeling Balls(拓扑)
  • 原文地址:https://www.cnblogs.com/suixufeng/p/3336172.html
Copyright © 2011-2022 走看看