我的NHibernate之路(1)---基本配置篇

对初学者来说,学习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各个版本下所需要的其他库文件必须与之配 套使用,应注意版本。

时间: 2024-08-10 11:28:42

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

我的NHibernate之路(2)---主从表(一对多)配置篇

通过我上篇文章的配置,单独做一张表的操作已经够了.但是在我们实际开 发的过程中,很多时候数据库中都存在着主从表等关系,这时候就存在主表中的 一条记录可能对应多条从表中的记录.那么这种情况下,我们还用上篇文章的的 简单配置就不够了.下面我通过一个实际的例子说说Nhibernate中主从表的配置 . 先介绍开发环境和软件版本:VS2008 SP1.NHibernate-2.1.2.GA-bin.在下 面的例子中,就两张表,一张Class表,一张Student表.这就是一个典型的主从 表的关系. 这种

Home Lab家庭实验室搭建之网络配置篇

本文讲的是Home Lab家庭实验室搭建之网络配置篇,在本文中,我将介绍构建网络的基本设置,这是一个简单的平面化网络,处于作为防火墙,NAT,DHCP和VPN的路由器的后面. 第一个操作是创建一个虚拟交换机,该平面网络中的所有虚拟机都将连接到该虚拟交换机. 几乎所有的虚拟解决方案都支持在一个名称或另一个名称下配置虚拟交换机.由于我为我的家庭实验室选择了ESXi,下文中所显示的命令都是用于此平台的命令,但一般来说,你可以使用Hyper-V或XenServer完成相同的操作. 我通过命令行显示所有步

【Windows10 IoT开发系列】配置篇

原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry Pi.MinnowBoard和Galileo平台上的核心版.本文重点针对Raspberry Pi平台的Windwos10 IoT配置做介绍. Windows 10 IoT Editions ​一:设置你的电脑. 注:​开发Windows10 IoT的电脑需要Visual Studio 2015.

SharePoint 2013 工作流之年假审批Designer配置篇

原文:SharePoint 2013 工作流之年假审批Designer配置篇 本文介绍SharePoint 2013 使用Designer工具,设计年假审批工作流,由于流程所用的条件和操作都比较简单,所以演示为主,最后附流程图和流程的文本图,有兴趣的可以参照实验.如果对于Designer设计工作流的方法不是很熟悉,可以参见本博客的其他文章. 1.新建请假申请列表,创建一张请假申请表,如下图: 2.选中请假申请表,点击工作流: 3.在工作流页面,选中启动工作流: 4.回到列表页,发现工作流已经启动

Duwamish深入剖析-配置篇

Duwamish深入剖析-配置篇 摘要: 本文详细介绍了Duwamish网上电子书店的Web.config配置文件的结构处理方式以及用途,阐述了配置文件的各功能模块中的作用. 目录: 引言 配置节处理程序声明 自定义配置节 配置节处理程序 总结 参考资料 作者 引言: 几乎在每本介绍Asp.Net编程的书里,在谈到如何管理数据库连接字符串的时候,都是采用将数据库连接字符串以如下形式放在Web.Config文件中: ppSettings> dd key="ConnectionString&q

我的NHibernate之路(3)---表间多对多配置篇

本节要点: 1.如何配置表之间多对多的关系 2.多表之间如何进行操作 对于关系型数据库,表之间也多对多的关系也很常见的.在我们实际开发过 程中如何进行正确的映射的配置,以及所关联的表之间是如何操作的?这是本文 讲述的重点. 开发环境:VS2008 SP1 使用的NHibernate版本:NHibernate-2.1.2.GA- bin. 将上节讨论的学生表与班级表再进行深层次的引入:如果构建一个学生选课 的数据库,还需要什么表?表之间的关系如何对应?还是通过LINQ的截图说说表 的字段以及表之间

在Eclipse中集成Ant编程之配置篇

编程 提要:本文将向你展示如何使用Eclipse设置为Ant所用的属性值和环境变量,并简要分析如何配置Ant编辑器以便从Eclipse内部操作Ant文件. 一. 修改Ant Classpath 在使用一个可选的或定制的任务时,你可能需要把其它库添加到classpath中.为此,你可以通过以全局方式或使用一个单独工程的启动配置来修改Ant classpath.为了给一个单独的Eclipse工程设置Ant classpath,打开该工程的Ant启动配置并点击Classpath选择卡:然后,通过点击"

WIN2003上Apache2+IIS6+Tomcat5之多站点完美配置篇

apache|iis|站点 本来以为上一次的配置就搞定了,结果本地测试好好的,到了服务器上调试就完蛋了,本地只测试了一个asp站和一个jsp站,而实际情况是多个asp站和我的jsp站,又试了两次还是不行,终于在第三次尝试后搞定了,写下来做个纪念. 第一次尝试使用: <VirtualHost *:80>   ServerAdmin feifei0658@sina.com  ServerName www.5hope.com   DcumentRoot "G:\5hope   Direct

安装配置篇(四)--apache+resin

apache 如果你的网站是建立在apache下现在又想使用jsp,怎么办呢?你可以通过一些支持apache的jsp引擎(如resin,tomcat,jser等)来实现.这里介绍怎么配置apache+resin使apache支持jsp. 一.分别安装配置apache和resin使各自都单独能正常运行. apache和resin的安装后路径如下:c:\apache 和 c:\resin1.1. 二.配置apache 这里配置apache,使其装载resin的jsp引擎.增加如下的命令行到c:\ap