当前位置: 首页 > article >正文

简单认识NHibrenate

NHibernate

NHibernate定义

NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象关系(O/R  Mapping,Object Relatiional Mapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发室人工使用SQLADO.NET处理数据的时间。NHibernate的目标是对开发者通常的数据持久化相关的编程任务,解放其中的95%。并请记住NHibernate作为数据库访问层,是与你的程序紧密集成的。

一、创建C#类库项目

1)开发环境:Microsoft Visual Studio 2008 SP1、SQL Server 2008 Express、NHibernate 2.1.1GA

2)获取NHibernate(http://sourceforge.net/projects/nhibernate/处可以获取NHibernate的最新版本)

3)准备数据库表(新建一个数据库:NHibernate,包括四个表:客户表、订单表、订单产品表、产品表)


4)新建项目文件夹,如下图所示。(将下载NHibernate中Castle.Core.dll、Castle.DynamicProxy2.dll、Iesi.Collections.dll、log4net.dll、NHibernate.dll、nunit.core.dll、nunit.framework.dll如图2所示程序集文件拷贝到lib文件夹下)

            

5)添加项目引用

DomainModel:引用Iesi.Collections.dll程序集(Set集合在这个程序集中)Castle动态代理

DAL:引用NHibernate.dllIesi.Collections.dll程序集和动态代理相关程序集,    DomainModel引用

DAL.Test:引用NHibernate.dllIesi.Collections.dll程序集,nunit.framework.dll程序集(测试框架)DomainModelDAL引用

二、设计DomainModel

1)新建一个Customer.cs类文件(编写持久化类来映射成为数据库表)


规则:

l NHibernate使用属性的gettersetter来实现持久化。

l 属性可设置为publicinternalprotectedprotected internal private

注意:

NHibernate默认使用代理功能,要求持久化类不是sealed的,而且其公共方法、属性和时间声明为virtual。在这里,类中的字段要设置为virrual,否则出现”failed:........”异常。

2)编写映射文件

小提示:

我们要为Microsoft Visual Studio 2008添加编写NHibernate配置文件智能提示的功能。只要在下载的NHibernate里找到configuration.xsdnhibernate-mapping.xsd两个文件并复制到C:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas目录即可。


NHibernate要知道怎样去加载和存储持久化类的对象。这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。映射文件告诉NHibernate它应该访问数据库里的哪个表及使用表里面的哪些字段。

这里,我们在mapping文件夹下新建一个XML文件,命名为Customer.hbm.xml

注意:

XML文件的默认生成操作为”内容”这里需要修改为”嵌入的资源”生成,使用.NET Reflector查看程序集

否则出现”faied:....”异常。

三、设计数据访问层

我们现在可以NHibernate了。首先,我们要从ISessionFactory中获取一个ISession(NHibernate的工作单元)ISessionFactory可以创建并打开心的Session。一个Session代表一个单线程的单元操作。ISessionfactory是线程安全的,很多线程可以同时访问它。ISession是不线程安全的,它代表与数据库之间的一次操作。ISessionFactory通常是个线程安全的全局对象,只需要被实例化一次。我们可以使用GoF23中的单例(Singleton)模式在程序中创建ISessionFactory

1)在DAL层新建一类NHibernateSample.cs,编写以方法GetCustomerId用于读取客户信息。在编写方法之前,我们要初始化Session


NHibnernate有不同的方法来从数据库中取回对象。最灵活的方式是使用NHibernate查询语句(HQL)是完全基于面向对象的SQL


四、编写数据访问层的测试

1)使用hibernate.cfg.xml文件来配置。


注意:

XML文件默认“复制到输出目录”为“不复制”,这里需要修改为“始终复制”。否则出现“failed.......”异常。

2)测试,新建一个测试类NHibernateSampleFixture.cs来编写测试用例:调用NHibernateSample类中GetCustomerId方法查询数据库中CustomerId1客户,判断返回客户的Id是否为1.

     

http://www.lryc.cn/news/2413977.html

相关文章:

  • OpenCV的copyTo()函数讲解及应用
  • ASP.Net学习心得
  • 用 Gmail 的 SMTP 发送邮件
  • 启动应用程序出现msflxgrd.ocx找不到问题解决
  • 鸿蒙原生应用元服务-访问控制(权限)开发工作流程相关
  • main.js_vue
  • 又一个好用的嵌入式设计框架
  • C#上下文菜单(右键菜单)ContextMenuStrip用法总结
  • 基于STC12C5A60S2系列1T 8051单片机的TM1637键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值的功能
  • JAX-WS 介绍 【转载】
  • 东方航空航班如何值机?
  • location.hash属性介绍
  • 键盘打字指法规范(附图解)
  • 什么是webservice
  • 数据中心日常运维主要工作内容具体包括哪些方面呢?
  • Windows系统缺少丢失mscoree.dll文件如何解决的?
  • 如何扩容C盘?6种扩展C盘方法!
  • process.waitfor()超时配置
  • Structs2学习(三)
  • win怎么查看linux文件,Windows下查看LINUX ext2/ext3格式的三种常用方法(图解)
  • Element UI --- Select下拉框多选页面数据不更新问题
  • ComponentOne Crack,componentone控件集
  • 【迅搜18】扩展(一)Xapian官方文档学习
  • Android广播机制——广播的注册
  • 线程死锁及其解决
  • 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)
  • 最全软件测试工具大全
  • Git:Git分支管理规范 / 常用命令
  • illegalargumentexception是什么异常_Java程序员必备:异常的十个关键知识点
  • 【C语言】初学者写基础代码的基本步骤