第一次用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,

建库脚本为:

 


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

drop database NHB

GO

create database NHB

GO

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

 

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

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

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

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

 


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


<?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的配置文件

文件的内容如下:


<?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代码中我们写上

 


/*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);
}
 
posted @ 2010-04-11 23:13  你妹的sb  阅读(272)  评论(1编辑  收藏  举报
百度一下