本文档适合初级开发者或者是第一次接触NHibernate框架的朋友,其中NHibernate不是最新的版本,但是一个比较经典的版本 NHibernate 2.1.2,其中用红线标注的部分一定要仔细看,这些都是容易忽略和出错的地方,笔者在此给大家做了特殊标记。

NHibernate框架的介绍:http://baike.baidu.com/view/954535.htm

开发环境 Vs 2010 + MsSql2005 + NHibernate 2.1.2.

本示例的下载地址:点击下载;NHibernate 2.1.2的下载地址:点击下载

目录

步骤一、创建数据库和映射的表。

步骤二、创建项目和实体类映射类以及类对应的映射文件。

步骤三、添加项目引用与NHibernate的dll文件。

步骤四、配置hibernate.cfg.xml文件(数据库映射信息配置)无需配置web.config。

步骤五、创建和使用NHibernate.

 

步骤一、创建数据库和映射的表。如图:

数据库:hibDB,映射表:people.

步骤二、创建项目和实体类映射类以及类对应的映射文件

新建一个网站,网站创建之后,网站解决方案右键,选择添加 => 新建项目 => 类库

给类库起名,本测试程序名称为:Com.uuu9.nHibernate,然后把自带的Class1.cs改名为创建映射表的名称(映射实体类的名称),本示例为People.cs,其中实体类的代码为表属性的set与get,如图:

与之前写的实体类不同的是此实体类每个属性前面就加了virtual,虚方法或者属性的关键字,子类可以从新定义(override),在这里必须有virtual 关键字,不然程序运行就会出错。笔者判断此原因可能是程序在运行时候此属性被重新映射(定义),所以必须添加virtual关键字。

然后比较重要的一个步骤就是配置此实体类对应的映射文件,此映射xml文件名称固定为“实体类.hbm.xml”,其代码如图:

实体类的属性配置,其中“Com.uuu9.nHibernate”为上述所建类库(生成程序集的名称)的名称。注意:每个实体类对应的映射文件“实体类.hbm.xml”,都要右键设置生成类型属性为:嵌入的资源。如图:

因为当作为一个资源被嵌入后,项目的默认命名空间与文件名就组成了资源访问的完整名称,NHibernate运行时会访问资源的完整名称,但如果不设置,程序就找不到映射文件,就会认为此类没有设置映射,也就不能使用NHibernate操作。

步骤三、添加项目引用与NHibernate(版本2.1.2)的dll文件。

要引用的NHibernate的dll如图:

其中都为必须引用的dll。

步骤四、配置hibernate.cfg.xml文件(数据库映射信息配置)

hibernate.cfg.xml文件为NHibernate的配置文件,名称固定,且必须放到Bin目录中。内容如图:

name可以自己随意定义,

“NHibernate.Dialect.MsSql2005Dialect”可根据实际的数据库的需要改为 2000Dialect、2008Dialect。

注意:“<mapping assembly="Com.uuu9.nHibernate"/>”为实体类生成程序集的名称,一直要写正确,一定要有。

步骤五、创建和使用NHibernate

使用的代码如图:

至此NHibernate制作完毕。

本示例的下载地址:点击下载;NHibernate 2.1.2的下载地址:点击下载

最新文章

  1. RabbitMQ的work queue(2)
  2. js代码优化
  3. 如何用HTML5+PhoneGap写个Path项目
  4. Java中toArray的用法探究(java数组与list转换)
  5. 聊聊iOS开发中耳机的那点事(监听耳机拔插、耳机线控)-b
  6. WPF passwordbox 圆角制作
  7. LIB文件和DLL文件的作用
  8. pyqt5和qt-designer结合
  9. 一篇文章搞定css3 3d效果
  10. c语言的字符串
  11. Vue语法学习第一课——插值
  12. LeetCode【104. 二叉树的最大深度】
  13. python实现类似于Matlab中的magic函数
  14. 第27课 可变参数模板(8)_TupleHelper
  15. 基于脚本的nodemanager管理器
  16. Spring @Value注解问题
  17. CCCC L2-017. 人以群分 贪心
  18. selenium webdriver模拟鼠标键盘操作
  19. java的文件操作(1)
  20. 润乾填报页面导入excel后增加js动作

热门文章

  1. pandas基础(3)_数据处理
  2. php 生成图片,只获取字节数据,不以图片格式输出
  3. 51nod1282(最小表示法&amp;&amp;枚举)
  4. 51nod1108(曼哈顿距离)
  5. 剑指Offer的学习笔记(C#篇)-- 二叉树的下一个节点(好理解版本)
  6. 页面出现滚动条时,body里面的内容不能自动居中?
  7. hdu1392凸包裸题
  8. 2017ACM/ICPC广西邀请赛 CS Course
  9. 类成员函数的重载、覆盖和隐藏区别 (C++)
  10. scp 可以在 2个 linux 主机间复制文件