NHibernate中的数据添加问题 急。。

我想问NHbernate中关于添加多条数据的问题,之前我SESSION.SAVE的方法我将他们单独出来添加后没有问题,但是一个方法中用2个也没问题,但是当我分为2个方法后... 我想问NHbernate中关于添加多条数据的问题,之前我SESSION.SAVE的方法 我将他们单独出来添加后没有问题,但是一个方法中用2个也没问题 ,但是当我分为2个方法后添加就报two session open的错误,不管怎么样都解决不了这个问题,但是有个添加,其中某列需要从一个表中得到,而那个表就是之前要添加的,这样该怎么解决呢? 急。。 展开
 我来答
匿名用户
2013-08-17
展开全部
一、创建数据库数据库名: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属性值LabelLabel1ID:LabelLabel2姓名:LabelLabel3密码:LabelLabel4Email:LabelLabmessage TextBoxTxtId TextBoxTxtName TextBoxTxtPassword TextBoxTxtEmail ButtonButSave添加ButtonButDel删除ButtonButUpdata修改 四、创建映射文件(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(); } }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式