NHibernate快速指南

KeyLife富翁笔记
作者: HongYuan
标题: NHibernate快速指南
关键字:
分类: 个人专区
密级: 公开
(评分: , 回复: 0, 阅读: 1580) »»

NHibernate快速指南


什么是NHibernate

NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。

NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。

为什么写这个指南

任何熟悉Hibernate的人会发现这篇指南和Glen Smith 的 A Hitchhiker's Guide to Hibernate 非常相近。这里的内容正是基于他的指南,因此所有的感谢都应该给与他。

NHibernate的文档并非每处都和Hibernate的文档一致。然而,项目的相似应该能使读者通过读Hibernate的文档来很好的理解NHibernate如何工作。

这篇文档意在让你尽可能快的开始使用NHibernate。它将介绍如何持久化一个简单的对象到一张表里。想得到更多的复杂的例子,可以参考NUnit测试及附带代码。




开发的过程






Nhibernate未来将会提供一些工具帮助你自动产生schema文件(现在还是基于代码)或是通过映射文件产生类(在筹措阶段)或是更新schema(来自于一个新开发者的建议)。然而,这里我们的例子是假定一切来自于完全手写,包括设置表和.Net类的编写。我们将进行以下步骤。

1.新建一个将要持久化.Net对象的表

2.构建一个需要被持久化的.Net类

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

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

5.使用NHibernate的API




第一步:写构建表的SQL






这里我们将使用的是一个非常简单的例子。假设你正在为你的网站开发一个基本的用户管理子系统。我们将使用如下的一张User表(假定你已经设置好一个数据库—在的例子里我称它为NHibernate)。







               
use NHibernate
go
 
CREATE TABLE users (
  LogonID nvarchar(20) NOT NULL default '0',
  Name nvarchar(40) default NULL,
  Password nvarchar(20) default NULL,
  EmailAddress nvarchar(40) default NULL,
  LastLogon datetime default NULL,
  PRIMARY KEY  (LogonID)
)
go
我使用的是MS Sql Server 2000, 但也可以使用任何数据库,只要你有关于它们的基于.Net数据提供驱动程序。我们将得到一个含有LogonID,Name, Password, Email 和LastLogon的表. 经过以上标准步骤,我们下一步是写一个.Net类处理一个给定的User对象。


2005-9-20 16:28:01   
 2005-9-20 16:38:39    第二步:产生一个.Net 类文件

第二步:产生一个.Net 类文件






当内存中有一堆User对象的时候,我们需要某种对象去保存它们。NHibernate通过对象属性的反射来工作,因此我们需要添加我们希望持久化的对象属性。一个可以被NHibernate持久化的类应该看起来象下面的样子:

               
using System;
 
namespace NHibernate.Demo.QuickStart
{
        public class User
        {
               private string id;
               private string userName;
               private string password;
               private string emailAddress;
               private DateTime lastLogon;
 
 
               public User()
               {
               }
 
               public string Id
               {
                       get { return id; }
                       set { id = value; }
               }
 
               public string UserName
               {
                       get { return userName; }
                       set { userName = value; }
               }
 
               public string Password
               {
                       get { return password; }
                       set { password = value; }
               }
 
               public string EmailAddress
               {
                       get { return emailAddress; }
                       set { emailAddress = value; }
               }
 
               public DateTime LastLogon
               {
                       get { return lastLogon; }
                       set { lastLogon = value; }
               }
               
        }
}
在上面的例子里,我们的属性和构建函数 是public,但这个对NHibernate不是必要的.它可以使用public, protected, internal或者甚至是用private来持久化数据。

 
 2005-9-20 16:40:58    http://www.tiantiansoft.com/bbs/dispbbs.asp?boardid=40&id=99485

http://www.tiantiansoft.com/bbs/dispbbs.asp?boardid=40&id=99485

posted @ 2006-11-22 09:46  云水浮萍  阅读(161)  评论(0编辑  收藏  举报