用Nhibernate怎麼實現資料的添加、刪除、修改簡單程式
來源:互聯網
上載者:User
程式|資料 一、建立資料庫
資料庫名: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();
}
}
因本人也是剛接觸Nhibernate不久,還有好多技術痛點不怎麼明白,還需多加努力,願與大家一起探討。