以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Java/Eclipse 』 (http://bbs.xml.org.cn/list.asp?boardid=41) ---- 用Nhibernate怎么实现数据的添加、删除、修改简单程序 (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=15537) |
-- 作者:npuhetao -- 发布时间:3/14/2005 1:45:00 PM -- 用Nhibernate怎么实现数据的添加、删除、修改简单程序 一、创建数据库 数据库名:Nhibernate 数据表:users
二、总体介绍 项目名:WebNhibernate 界面:WebForm.aspx 具体表现文件:WebForm.aspx.cs 实体类文件:EntityClass.cs 映射文件:Userhbm.xml 配置文件:Web.config
三、创建Web界面 类型
四、创建映射文件(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>
六、实现代码 双击“添加“按钮 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.删除数据: { 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.修改代码: { 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不久,还有好多技术难点不怎么明白,还需多加努力,愿与大家一起探讨 |
-- 作者:xmzhy -- 发布时间:3/15/2005 9:50:00 AM -- ding |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
93.750ms |