NHibernate配置入门

 

NHibernate配置入门

  NHibernate框架已经出了很久,一直没赶上用它,闲着没事,今天来试用一下,结果,配置错误N多,都不敢再试了,还好最后还是配置出来了。

  首先 没安装vs2005的,赶快安装,安装好了的可以http://downloads.sourceforge.net/nhibernate/NHibernate-1.2.0.CR1.msi?modtime=1172161735&big_mirror=0
  下载好之后 安装MSI文件。安装好了在安装目录下会有一个Bin目录,该目录下就存放着NHibernate的DLL文件,今天我们只用到三个:

Iesi.Collections.dll,log4net.dll,NHibernate.dll.

好了 我们准备工作开始了之后就进入正题了。

使用的数据库为SqlServer2000,

建库脚本为:

 

Code
if exists(select * from sysdatabases where name='NHB')

drop database NHB

GO

create database NHB

GO

Create Table Users
(
    Id int identity(1,1) primary key,
    [Name] nvarchar(20) uinque not null,
    [Pwd] nvarchar(20) not null
)
 

 第一步:新建一个空白解决方案

第二步:在解决方案上右键,添加一个网站,命名为:MyNHibernate,呵呵 做Web做多了,还是用Web来测试吧。。

第三步:在解决方案上右键,添加一个类库 命名为:Model....

第四步:在Model类库中添加一个新类User

 

Code
namespace NHibernateTest
{
    public class User
    {
        int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        string _pwd;
        public string Pwd
        {
            get { return _pwd; }
            set { _pwd = value; }
        }

    }
}

在类库中添加一个xml文件命名为:User.hbm.xml

Code
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="NHibernateTest.User,Model" table="Users" lazy="false">
    <id name="Id" column="Id" unsaved-value="0">
      <generator class="native" />
    </id>
    <property name="Name" column="Name" type="string" length="64" not-null="true" unique="true"></property>
    <property name="Pwd"  column="Pwd"  type="string" length="64" not-null="true"></property>
  </class>
</hibernate-mapping>

在Xml文件的属性中将生成操作设为:嵌入的资源

好了Model类库已经建好。。

我们在MyNHibernate网站上右键 添加引用 选择项目 选择Model

现在我们开始配置NHibernate了

拷贝Iesi.Collections.dll,log4net.dll,NHibernate.dll这三个DLL放入网站的Bin目录下。。。同时在Bin目录下新建一个hibernate.cfg.xml的配置文件

文件的内容如下:

Code
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibrtnate-configuration-2.2">
  <session-factory xmlns="urn:nhibernate-configuration-2.2">
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">Server=.;user id=sa;pwd=123456;database=NHB</property>
    <property name="show_sql">false</property>
    <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
    <property name="use_outer_join">true</property>
    <mapping assembly="Model" />
  </session-factory>
</hibernate-configuration>
该文件就是用来配置NHibernate 创建ISessionFactory时会自动找到该文件 同时 我们也可以在Web.config中配置NHibernate 这里就不写了

这里注意一下:session-factory的xmlns属性必须配置。。<mapping assembly=""/>这里写上你的数据持久层类库的名字 供NHibernate映射。。。注意名字一定要正确。

好了 我们配置好之后就可以使用NHibernate了

在Default.aspx.cs的Page_Load代码中我们写上

 

Code
/*using NHibernate;
using NHibernate.Cfg;
using NHibernateTest;引用的DLL*/
       
        NHibernate.Cfg.Configuration cfg=new NHibernate.Cfg.Configuration();
        ISessionFactory factory = cfg.Configure().BuildSessionFactory();
        ISession session = factory.OpenSession();
        NHibernateTest.User user = new User();
        user.Name = "xiaopeng";
        user.Pwd = "xiaopeng";
        try
        {
            session.Save(user);
            Response.Write("Success");
        }
        catch(Exception ex)
        {
            Response.Write(ex.Message);
        }
 

http://svn.sndacode.com/dhibernate

你可能感兴趣的:(String,assembly,database,sqlserver,generator,encoding)