NHibernate3学习笔记(一)--第一个NHibernate程序

开发环境:VS2010(C#)+NHibernate3.3.0GA+MSSQL2008+MBUnit3

一、前言

最近开始玩NHibernate,从网上下了一老外2008年录的NHibernate夏季之旅(Summer of Nhibernate)长14集的录像,一边看一边动手;录像每集大概90分钟,讲的都是很基础的东西,但无奈本人英语不好,只能慢慢看,慢慢试验,顺便把心得体会写下来。

二、数据库

1.准备好一个数据库,我在MSSQL2008中新建了一个hhibTest(名字乱写的)数据库,在其中新建一个表Customer。

USE [hhibTest]
GO

/****** Object:  Table [dbo].[Customer]    Script Date: 05/09/2012 20:08:37 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Customer](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[FirstName] [nchar](50) NULL,
	[LastName] [nchar](50) NULL
) ON [PRIMARY]

GO

三、工程建立

1.打开VS2010,新建一个C#的类库工程,具体结构如下。

其中DataTransfer是实体类,DataAccessLayer是数据存取类,DataAccessLayerTest是测试类。

2.开始要用NHibernate了,在DataTransfer中建立Customer类。

 public class Customer
    {
        public virtual int CustomerId { set; get; }
        public virtual string FirstName { set; get; }
        public virtual string LastName { set; get; }
    }


上面我用了VS的新特性:自动属性,程序看起来简洁多了,嘿嘿。

注意:使用NHibernate的话对象类的属性要为Virtual。

3.在DataTransfer类中新建Customer.hbm.xml文件。


  
    
      
    

    
    
  


NHibernate就是通过这个文件将实体类与数据库中的标对应起来,到此为止DataTransfer类就完成了,Build一下,0 error,0 warning!

4.在DataTransfer类中引用NHibernate.dll文件,当然还要引用刚刚生成的DataTransfer.dll。

在VS中使用NHibernate3要用到这几个dll文件,可以把这几个文件放到一个文件夹里放着。

5.在DataAccessLayer中添加NhibernateDataProvider类,此类用于读取数据库。

public class NhibernateDataProvider
    {
        public Customer GetCustomerById(int customerId)
        {
            NHibernate.Cfg.Configuration config = new NHibernate.Cfg.Configuration();
            config.Configure("hibernate.cfg.xml");
            NHibernate.ISessionFactory sessionFactory = config.BuildSessionFactory();

            NHibernate.ISession session = sessionFactory.OpenSession();

            return session.Get(customerId);
        }
    }

6.好了,这个类也完成了,生成一下。

四、测试

1.使用MBUnit进行测试,在DataAccessLayerTest中导入Gallio.dll及MBUnit.dll文件。

2.导入DataAccessLayer.dll及DataTransfer.dll和NHibernate.dll。

3.新建一个测试类。

 [TestFixture]
    public class Tests
    {
        [Test]
        public void CanGetCustomerById()
        {
            DataAccessLayer.NhibernateDataProvider provider = new DataAccessLayer.NhibernateDataProvider();

            Assert.AreEqual(1,provider.GetCustomerById(1).CustomerId);
        }


    }

4.新建一个hibernate.cfg.xml文件,此文件是NHibernate核心配置文件。


  
    NHibernate.Driver.SqlClientDriver
    
      Server=(local);initial catalog=hhibTest;Integrated Security=True
    
    NHibernate.Dialect.MsSql2008Dialect
    
  


5.OK,都弄完了,Build一下。

6.使用Gallio Icarus进行测试!


你可能感兴趣的:(NHibernate3学习笔记(一)--第一个NHibernate程序)