对初学者来说,学习NHibernate第一个障碍便是他的配置。确实,相对于LINQ TO SQL或者是Entity FrameWork来说,他的配置太复杂了,各个实体类对应的映射文件、以及NHibernate自身的配置等等,对象刚学习NHibernate的新手来说,确实是摆在他们面前的一道坎。那么NHibernate的配置到底应该注意哪些问题?又该如何去进行配置呢?俗话说“给人鱼不如授人以渔”。下面我就说说自己在使用NHibernate配置的过程,以及在配置中出现问题后,怎样去解决这些问题。

  先介绍我使用的环境以及Nhibernate的版本。

开发环境:VS2008 SP1、 NHibernate-2.1.2.GA-bin. 

  1、NHibernate如何配置

     Nhibernate的配置,当然可以手写进行配置的。但是在编写映射文件的时候有没有智能提示呢?答案是有的!那怎样才能在VS中让我们在编写、修改映射文件的时候出现智能提示呢。?在我学习NHibernate的博客(http://www.cnblogs.com/lyj/archive/2008/10/14/1310913.html)中,永哥(我的名字也有个永字,^_^)说“在下载的NHibernate里找到configuration.xsd和nhibernate-mapping.xsd两个文件(这个文件我们可以在src\NHibernate.Config.Templates文件夹下找到)并复制到X:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas目录即可"。我刚开始以为是NHibernate小组在开发Nhibernate后将源代码发布了(因为有SRC,我想应该是源代码的文件夹吧!),里面有这两个文件。后来我试着去找NHibernate的源码,结果找到的都是别人用NHibernate开发取来的例子的源码。因为我就没有找到,最后不得不放弃。我把下载到的NHibernate-2.1.2.GA-bin解压后,在Required_Bins文件夹下nhibernate-mapping.xsd、nhibernate-configuration.xsd复制到C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas下,试编写映射文件,结果发现有了智能提示了。【注:我这里并不是他永哥说错了,因为他发表他那边博文的时候是08年,现在都2010了,Nhibernate的版本是改了又改,文件名肯定也会发生变化。我用是的版本比他的新。我学习Nhibernate也是从永哥的博客开始的。另外谢谢永哥这么好的博文!】

  2、NHibernate在我们项目中需要的程序集动态库如下:NHibernate.dll、NHibernate.ByteCode.Castle.dll、Antlr3.Runtime.dll、Iesi.Collections.dll、log4net.dll。另外:如果你的NHibernate的代理工厂配置为Castle【即对property name='proxyfactory.factory_class'的配置】,则还需要Castle.Core.dll、Castle.DynamicProxy2.dll。当然若你配置的代理工厂类为LinFu,则需要他所对应的程序集文件。在NHibernate.dll2.0.1.4000不设置它也行。但是2.1.2下必须设置。说明:设置它的作用就是我们需要在程序中用什么样的方式实现延迟加载

  3、映射文件的设置:所有实体类对应的映射的XML文件应该设置为“嵌入资源”。否则系统程序会异常。如:

  另外,对各个实体类的映射文件中的unsave-value的设置,具体请参见我的CSDN的博客(http://blog.csdn.net/tyb1222/archive/2010/09/22/5900923.aspx)我这里就不做说明了。

  4、NHibernate的配置文件的设置:在我们下载的NHibernate-2.1.2.GA-bin解压后,会有一个Configuration_Templates文件夹。他里面存放的是Nhibernate所支持的各种数据库的配置。选择你用的数据库类别,将相应的xml文件拷贝到配置文件中。注意:在Configuration_Templates文件夹下的SQLSERVER数据库的配置文件中,需添加对应实体类的程序集的配置【如:mapping assembly="Model"】,否则会报如上3中所出现的异常。我觉得默认的配置模板中就应该加上对实体类所在程序集的配置,我们改相应的程序集名称就行了,但是在2.1.2.GA中却并没有这样做。  

  5、注意你的映射文件中class 里属性的配置,若配置不正确变回提示如下异常:

  

  通常这样的异常是由于系统找不到由映射文件制定的程序集而产生

  6、NHibernate-2.1.2的配置与以前版本不一样的地方:必须设置延迟加载的方式、Nhibernate的配置不必设置为"始终复制",默认即可、所需的程序集文件比以前多【因为延迟加载现在必须设置,所以涉及的动态库文件也是必不可少的】

  总结:NHibernate-2.1.2配置需注意将映射文件设置为嵌入的资源、对从配置模板中拷贝过来的必须添加对实体类程序集配置以及我们需要的数据库连接、如果我们是实体类的映射文件中不申明不使用延迟加载则对应的实体类所有的属性方法必须为virtual、NHibernate各个版本下所需要的其他库文件必须与之配套使用,应注意版本。

我的NHibernate之路(1)---基本配置篇相关推荐

  1. 从零开始的 React 组件开发之路 (一):表格篇

    React 下的表格狂想曲 0. 前言 欢迎大家阅读「从零开始的 React 组件开发之路」系列第一篇,表格篇.本系列的特色是从 需求分析.API 设计和代码设计 三个递进的过程中,由简到繁地开发一个 ...

  2. Python之路【第八篇】:堡垒机实例以及数据库操作

    Python之路[第八篇]:堡垒机实例以及数据库操作 堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于 ...

  3. Python之路【第五篇】:面向对象及相关

    Python之路[第五篇]:面向对象及相关 Python之路[第五篇]:面向对象及相关 面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance ...

  4. VMware View 5.0从菜鸟到高手系列 10 –远程图形工作站配置篇

    本文档依照PCoIP设备供应商丽台(Leadtek)提供的零客户机VP200P以及PCoI卡VP200H为例,为了介绍整个安装步骤.以下配置在VMware view 4.5中安装,但在更新的版本中如V ...

  5. Duwamish深入剖析-配置篇

    Duwamish深入剖析-配置篇 摘要: 本文详细介绍了Duwamish网上电子书店的Web.config配置文件的结构处理方式以及用途,阐述了配置文件的各功能模块中的作用. 目录: 引言 配置节处理 ...

  6. Axure RP9 自学之路2-基础操作篇

    关注头条@路飞写代码,获取更多内容 上期回顾 前一篇文章我们主要是介绍了软件的安装,以及学习该软件的一些初衷,以及对软件的一些区域功能进行了相应的说明. 主要知识点 添加元件.设置元件名称.位置尺寸. ...

  7. Flutter开发之《新锐专家之路:混合开发篇》笔记(55)

    Flutter新锐专家之路:混合开发篇 作者:闲鱼技术-正物 本篇是此系列的第二篇,重点介绍如何让Flutter能够开发,实现业务需求.这部分包括:混合栈的管理,混合下的能力补齐和包管理. 混合栈的管 ...

  8. amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月

    黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...

  9. idea配置jfinal_intellij idea安装与配置(Java开发配置篇)

    一.maven配置 在configure->settings的搜索框中输入maven,然后入下图所示,修改maven主目录.maven配置文件.maven本地仓库地址 二.SVN设置 在搜索框中 ...

  10. [ webpack4 ] 配置属于自己的打包系统教程(最终篇)—— 环境配置篇

    GitHub 完整配置文件地址: https://github.com/yhtx1997/w... 由于篇幅过长分三次发布,建议按顺序看 [ webpack4 ] 配置属于自己的打包系统教程(一)-- ...

最新文章

  1. 全球最厉害的 14 位程序员!
  2. 【机器学习入门到精通系列】机器学习系统设计(Precision Recall)
  3. plupload+artdialog实现多平台文件上传
  4. 使用TortoiseGit操作分支的创建与合并
  5. 如何有效控制 Go 线程数?
  6. npm的镜像替换淘宝
  7. 移动端跨平台开发框架对比分析
  8. 快速理解设计模式六大原则
  9. Tree-AC训练实录
  10. 【实践】强化学习在招聘推荐冷启动优化中的应用实践
  11. golang语言os.Stat()用法及功能
  12. 运筹说 第41期 | 运输问题硬核知识点梳理—表上作业法求解运输问题
  13. 假设检验之几种检验方法的比较
  14. python中正则表达式与jieba分词的使用
  15. 前端——HTML,CSS
  16. 数据库 关系模式和关系的区别
  17. 一般英文(java)
  18. 马士兵mysql_MYSQL相关总结(马士兵教育)
  19. 前端 html+css+javascript (三剑客) 未完待续~~~
  20. 【强档推荐】网球王子高清桌面壁纸

热门文章

  1. Hibernate 系列教程9-自关联
  2. ACM学习历程—HDU2476 String painter(动态规划)
  3. 缺陷漏测分析:测试过程改进
  4. ASP.NET MVC 中宿主WCF Rest 服务的解决方法
  5. Symfony2 学习笔记之模板使用
  6. [转]SAP FI/CO 模块设置
  7. java resume过时方法_学点开发|关于Java多线程用法解析
  8. 计算Gaunt积分m1m2≥0
  9. sql server 多条记录数据合并为一条_如何利用Python实现SQL自动化?
  10. 虚指针的用法(原出处//http://blog.csdn.net/haoel/article/details/1948051)