用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();
              }
         }
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值