当前位置:编程技术网 > 技术文章 > 简明扼要的掌握ado.net框架 > 文章详细内容

学习ado.net(7):一起入门NHibernate

    Hibernate是一个非常优秀的针对关系型数据库的对象持久化类库, 可以大大简化数据库操作, NHibernate是Hibernate的for .net版本。当然大家用了之后就会发现NHibernate好像是替代了我们的ado.net。但是NHibernate的内部能离开ado.net吗? 所以,把NHibernate资料在ado.net这里一并列出来。

   

什么是NHibernate
 NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。
 Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。
 NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。

 

使用NHibernate 的步骤
1.新建一个将要持久化.Net对象的表
2.构建一个需要被持久化的.Net类
3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件
4.构建一个让NHibernate知道如何连接数据库的配置文件
5.使用NHibernate的API
    2、3步骤可使用第三方工具做,如CodeSmithPro

 

1.新建一个将要持久化.Net对象的表
create table Dep
(
depId int primary key identity(1,1),
depName varchar(20)
)
go
create table Emp
(
empId int primary key identity(1,1),
depId int,
empName varchar(20),
empAge int
)
go
--关系
ALTER TABLE Emp  WITH
CHECK ADD  CONSTRAINT FK_Emp_Dep FOREIGN KEY(depId)
REFERENCES Dep (depId)
GO
ALTER TABLE Emp CHECK CONSTRAINT FK_Emp_Dep
go


2.构建一个需要被持久化的.Net类    3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件


4.构建一个让NHibernate知道如何连接数据库的配置文件

 


5.使用NHibernate的API


5.1 基本操作-增
 Entity.Dep dep = new FirstHib.Entity.Dep();
 dep.DepName = "开发部";

 NHibernate.ISession seon = Hib.SessionFac.OpenSession();
 seon.Save(dep);

 seon.Flush();
 seon.Close();

5.2 基本操作-删 -1
 NHibernate.ISession seon = Hib.SessionFac.OpenSession();
 seon. Delete(dep);

 seon.Flush();
 seon.Close();

5.3 基本操作-删 -2
 NHibernate.ISession seon = Hib.SessionFac.OpenSession();
 seon.Delete("From FirstHib.Entity.Dep as d where d..DepId.=1");

 seon.Flush();
 seon.Close();

5.4 基本操作-改
 NHibernate.ISession seon = Hib.SessionFac.OpenSession();
 seon.Update(dep, 1);

 seon.Flush();
 seon.Close();

5.5 基本操作-查  - 根据主键查
 Entity.Dep dep = new FirstHib.Entity.Dep();          
 NHibernate.ISession seon = Hib.SessionFac.OpenSession();
 seon.Load(dep, 1);          
 seon.Flush();
 seon.Close();

5.6 基本操作-查  - 使用HQL查
 NHibernate.ISession seon = Hib.SessionFac.OpenSession();

 NHibernate.IQuery qu = seon.CreateQuery(
  "From FirstHib.Entity.Dep as d where d.DepName like '%开发%'");
 IList depList = qu.List();

 seon.Flush();
 seon.Close();


5.7 基本操作-查  - 使用Criteria查
 NHibernate.ISession seon = Hib.SessionFac.OpenSession();

 NHibernate.ICriteria criteria = seon.CreateCriteria(typeof(Entity.Dep));
 criteria.Add(
    NHibernate.Expression.Expression.Like("DepName", "zs")
 );
 //criteria.AddOrder(
 //    NHibernate.Expression.Order.Desc("DepId")
 //);
          
 IList list = criteria.List();

 seon.Flush();
 seon.Close();

5.8 事务
 太简单,就不写了, 翻翻文档

5.9 翻页
 a.使用 GridView内置分页
 b.使用Criteria分页
  criteria.SetMaxResults(页面大小);
  criteria.SetFirstResult(起始记录号);

5.10 一对多映射
  太简单,就不写了, 翻翻文档

 

提供下载的资料包括
1、NHibernate v1.2.0
2、CodeSmith  nhibernate_template
3、CodeSmith  请自己到网上搜索下载
 

点击下载 作者|来源:原创(17fx.net)发表于:2009-1-2 10:52:59
下一篇 没有了