用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不久,還有好多技術痛點不怎麼明白,還需多加努力,願與大家一起探討。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。