繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> 面向对象编程 >> NHibernate源代码浅读 1

NHibernate源代码浅读 1

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:42  文字大小:【】【】【
简介:NHibernate源代码浅读 1 曾经了解过Hibernate, 印象很深,是个很不错得O/R Mapping FW. 在http://nhibernate.sourceforge.net/上有个从Java移植过来得.NET版本--NHibernate(以下称NH),不过目前还处于PreAlpha Bui...
关键字:源代码 NHibernate

NHibernate源代码浅读 1

曾经了解过Hibernate, 印象很深,是个很不错得O/R Mapping FW. 在http://nhibernate.sourceforge.net/上有个从Java移植过来得.NET版本--NHibernate(以下称NH),不过目前还处于PreAlpha Build 2阶段.

出于兴趣以及学习.NET得目的, 花了两天仅看了很小一部分代码:一来源代码注释并不丰富,二来对于Hibernate/NHibernate的使用也很不熟悉,三来有些知识点还不熟悉.

准备工作如下:

1. NHibernate PreAlpha Build 2

2. NUnit

3. NHibernate配置文件 monitoring.dll.config 如下:

可以看出以上是一个标准得Config文件,一般由System.Configuration.ConfigurationSettings.GetConfig方法来读取.

蓝色部分才是真正配置NH的地方, 例子中我配置它使用SQL Server, 那些Key/Value的含义很好明白.

值得注意得是,配置文件得文件名很重要,通常对于一个EXE得Assembly来说,是AssemblyName.Config,不过对于Dll Assembly来,对应的配置文件为AssemblyName.dll.config 例如:

MyAssy.exe -> MyAssy.config

MyAssy.dll -> MyAssy.dll.config

我打算在我的monitoring.dll,一个用来监视性能东东中使用NH来持久化数据. 该类库包含了一个TestCase,由NUnit来调用

4.将要被持久化的对象, 即Business Object(BO)

using System;

namespace Argus.Monitoring

{

public class Monitor

{

//dbID & DBID 是NH必须要求的主键

private int dbID;

public int DBID{set{dbID=value;}get{return dbID;}}

public string MonitorType {get{return "dummy monitor";}}

public double Value {get{return 12.34;}

public string Category{get{return "this is category";}}

public string Name{get{return "this is name";}}

public string Instance{get{return "this is instance";}}

public string Computer{get{return "this is computer";}}

}

}

这是一个被极度简化的类,省略了Member Method,甚至Property的set方法,因为我打算先试试Insert功能,然后再尝试Load功能

5. 写一个该BO对应的最简单的映射文件

6. 最后一步 (好累啊~~~), TestCase:

using System;

using NUnit.Framework;

using NHibernate;

using Argus.Monitoring;

namespace Test.Monitoring

{

[TestFixture]

public class MonitoringTest

{

[Test] public void NHibernateTest ()

{

Argus.Monitoring.Monitor m=new Argus.Monitoring.Monitor ();

NHibernate.Cfg.Configuration cfg=new NHibernate.Cfg.Configuration ();

cfg.AddXmlFile ("Argus.Monitoring.Monitor.hbm.xml");

ISession session= cfg.BuildSessionFactory ().OpenSession();

session.Save (m);

session.Close ();

}

}

责任编辑:admin
相关文章