用Nhibernate實現數據的添加、刪除、修改

Nhibernate怎麼實現數據的添加、刪除、修改簡單程序
 
一、創建數據庫
數據庫名:Nhibernate
u
se 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();
              }
         }
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章