用Nhibernate怎么实现数据的添加、删除、修改简单程序

2024-02-21 08:48

本文主要是介绍用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();

              }

         }

这篇关于用Nhibernate怎么实现数据的添加、删除、修改简单程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731203

相关文章

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

Java实现字符串大小写转换的常用方法

《Java实现字符串大小写转换的常用方法》在Java中,字符串大小写转换是文本处理的核心操作之一,Java提供了多种灵活的方式来实现大小写转换,适用于不同场景和需求,本文将全面解析大小写转换的各种方法... 目录前言核心转换方法1.String类的基础方法2. 考虑区域设置的转换3. 字符级别的转换高级转换

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度