用Nhibernate怎麼實現數據的添加、刪除、修改簡單程序
一、創建數據庫
數據庫名:Nhibernate
use NHibernate
go
CREATE TABLE users (
LogonID nvarchar(20) NOT NULL default '0',
Name nvarchar(40) default NULL,
Password nvarchar(20) default NULL,
EmailAddress nvarchar(40) default NULL,
PRIMARY KEY (LogonID)
)
go
數據表:users
二、總體介紹
項目名:WebNhibernate
界面:WebForm.aspx
具體表現文件:WebForm.aspx.cs
實體類文件:EntityClass.cs
映射文件:Userhbm.xml
配置文件:Web.config
三、創建Web界面
類型
|
對象名
|
Text屬性值
|
Label
|
Label1
|
ID:
|
Label
|
Label2
|
姓名:
|
Label
|
Label3
|
密碼:
|
Label
|
Label4
|
Email:
|
Label
|
Labmessage
|
|
TextBox
|
TxtId
|
|
TextBox
|
TxtName
|
|
TextBox
|
TxtPassword
|
|
TextBox
|
TxtEmail
|
|
Button
|
ButSave
|
添加
|
Button
|
ButDel
|
刪除
|
Button
|
ButUpdata
|
修改
|
四、創建映射文件(xml文件)和實體類
實體類
using System;
namespace WebNhibernate
{
public class EntityClass
{
private string id;
private string userName;
private string password;
private string emailAddress;
public EntityClass()
{}
public string Id
{
get { return id; }
set { id = value; }
}
public string UserName
{
get { return userName; }
set { userName = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string EmailAddress
{
get { return emailAddress; }
set { emailAddress = value; }
}
}
}
映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="WebNhibernate.EntityClass, WebNhibernate" table="users">
<id name="Id" column="LogonId" type="String" length="20">
<generator class="assigned" />
</id>
<property name="UserName" column= "Name" type="string" length="40"/>
<property name="Password" type="string" length="20"/>
<property name="EmailAddress" type="String" length="40"/>
</class>
</hibernate-mapping>
注意點:
1.<class name="WebNhibernate.EntityClass, WebNhibernate" table="users">
WebNhibernate.EntityClass代表:實體類名
WebNhibernate代表:該項目的裝配集名稱
Users代表:數據表名
2.當屬性列表<property name=”” column=””/>中既有name和column說明實體層的屬性與數據表的字段名不同名
3.指定一個id, 在數據表中就是主鍵, 這個非常重要,nhibernate就是通過id來判斷對象的唯一性的.
五、在配置文件中添加配置內容
1.首先在配置文件的<configuration>代碼下面添加如下代碼
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
這一段代碼是必須要的
2.在配置文件的</system.web>代碼下面添加如下代碼
<nhibernate>
<!—連接數據提供者 -->
<add
key="hibernate.connection.provider"
value="NHibernate.Connection.DriverConnectionProvider"
/>
<!—連接數據方言最常用的是MsSql2000Dialect -->
<add
key="hibernate.dialect"
value="NHibernate.Dialect.MsSql2000Dialect"
/>
<!—連接數據驅動類-->
<add
key="hibernate.connection.driver_class"
value="NHibernate.Driver.SqlClientDriver"
/>
<!—連接數據庫-->
<add
key="hibernate.connection.connection_string"
value="Server=yanfa1;initial catalog=nhibernate;User id=sa;password=8626798;"
/>
</nhibernate>
六、實現代碼
首先在文件頭添加代碼
using NHibernate;
using NHibernate.Cfg;
1.添加數據:
雙擊“添加“按鈕
private void ButSave_Click(object sender, System.EventArgs e)
{
mCfg=new Configuration();//創建配置類
mCfg.AddXmlFile (System.Web.HttpContext.Current.Server.MapPath("Userhbm.xml"));//指明映射文件Userhbm.xml
EntityClass vEntity=new EntityClass();
vEntity.Id=TxtId.Text;
vEntity.UserName=TxtName.Text;
vEntity.Password=TxtPassword.Text;
vEntity.EmailAddress=TxtEmail.Text;
ISession vSession= mCfg.BuildSessionFactory().OpenSession();//創建會話工廠, 一般來說應該使用一個單例對象來封裝會話工廠.
ITransaction vTransaction = vSession.BeginTransaction();//創建事物處理
try
{
vSession.Save(vEntity);//向數據庫添加數據
vTransaction.Commit();
Labmessage.Text="OK";
}
catch(Exception ex)
{
vTransaction.Rollback();
Labmessage.Text="Error"+ex.ToString();
}
finally
{
vSession.Close();
}
}
2.刪除數據:
雙擊“刪除“按鈕
private void ButDel_Click(object sender, System.EventArgs e)
{
mCfg=new Configuration();
mCfg.AddXmlFile (System.Web.HttpContext.Current.Server.MapPath("Userhbm.xml"));
ISession vSession= mCfg.BuildSessionFactory().OpenSession();
ITransaction vTransaction = vSession.BeginTransaction();
try
{
EntityClass vEntity=(EntityClass) vSession.Load(typeof(EntityClass),TxtId.Text);//查找數據表中所要記錄
vSession.Delete(vEntity);//向數據庫刪除數據
vTransaction.Commit();
Labmessage.Text="OK";
}
catch(Exception ex)
{
vTransaction.Rollback();
Labmessage.Text="Error";
}
finally
{
vSession.Close();
}
}
3.修改代碼:
雙擊“修改“按鈕
private void ButUpdata_Click(object sender, System.EventArgs e)
{
mCfg=new Configuration();
mCfg.AddXmlFile (System.Web.HttpContext.Current.Server.MapPath("Userhbm.xml"));
ISession vSession= mCfg.BuildSessionFactory().OpenSession();
ITransaction vTransaction = vSession.BeginTransaction();
try
{
EntityClass vEntity=(EntityClass) vSession.Load(typeof(EntityClass),TxtId.Text);
vEntity.UserName=TxtName.Text;
vEntity.Password=TxtPassword.Text;
vEntity.EmailAddress=TxtEmail.Text;
vSession.Update(vEntity); //向數據庫修改數據
vTransaction.Commit();
Labmessage.Text="OK";
}
catch(Exception ex)
{
vTransaction.Rollback();
Labmessage.Text="Error";
}
finally
{
vSession.Close();
}
}