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);
}