一个简单的添加数据,调试到trans.Commit()后报错:IsolationLevel
<错误: 发生 {System.InvalidOperationException} 类型的异常>
System.Data.IsolationLevel程序能过,但数据库里并没有添加数据.我试过了各种hibernate.connection.isolation的设置
如:ReadCommitted,RepeatableRead, Serializable, Unspecified
用的是oracle数据库.设置事务隔离级别是不是要在oracle里也要相应的设置.
好郁闷啊?映射配置文件应该没错,我都是用的最简单的形式,往达人解惑啊,感激不尽!代码如下: public void AddPost()
{ NHibernate.Cfg.Configuration cfg = new Configuration(); cfg.AddAssembly("abc");
ISessionFactory factory = cfg.BuildSessionFactory(); ISession session=factory.OpenSession();
ITransaction trans=null; trans = session.BeginTransaction(); Post post = new Post();
post.PostID = "111";
post.Title = "helloNibernate";
post.Content = "handsomeboy";
post.Creator = "dwp";
trans.Commit(); session.Close(); }
<错误: 发生 {System.InvalidOperationException} 类型的异常>
System.Data.IsolationLevel程序能过,但数据库里并没有添加数据.我试过了各种hibernate.connection.isolation的设置
如:ReadCommitted,RepeatableRead, Serializable, Unspecified
用的是oracle数据库.设置事务隔离级别是不是要在oracle里也要相应的设置.
好郁闷啊?映射配置文件应该没错,我都是用的最简单的形式,往达人解惑啊,感激不尽!代码如下: public void AddPost()
{ NHibernate.Cfg.Configuration cfg = new Configuration(); cfg.AddAssembly("abc");
ISessionFactory factory = cfg.BuildSessionFactory(); ISession session=factory.OpenSession();
ITransaction trans=null; trans = session.BeginTransaction(); Post post = new Post();
post.PostID = "111";
post.Title = "helloNibernate";
post.Content = "handsomeboy";
post.Creator = "dwp";
trans.Commit(); session.Close(); }
Post post = new Post();
post.PostID = "111";
post.Title = "helloNibernate";
post.Content = "handsomeboy";
post.Creator = "dwp";
trans.Commit();
是不是因为事务中没有数据库操作,在post.Creator = "dwp";与trans.Commit(); 之间加上session.Save( post ); 试试??纯属瞎猜。
另外,在提交事务即trans.Commit(); 之前加入Save方法:session.Save(post);
最少要save一下吧
MS SQL Server里用uniqueidentifier与Guid匹配,
而ORACLE里没有支持Guid吧?
那NHibernate的ID一定要用Guid吗?
怎么使类型匹配啊?
配置文件:
<id name="PostID" column="POSTID">
<generator class="native" />
</id>
根据底层数据库的能力选择 identity, sequence 或者 hilo中的一个 然后去掉代码中的:
post.PostID = "111";由内置生成器生成ID;那ORACLE数据表中POSTID应该用什么类型才行呢?晕了...
cf.AddAssembly("NDataOp");
ISessionFactory factory = cf.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();
try
{
//NHibernate_Demo newUser = new NHibernate_Demo();
N_Users_Demo newUser = new N_Users_Demo();
newUser.Id = "500";
newUser.UserName = "J";
newUser.Password = "rer";
newUser.EmailAddress = "mbh";
newUser.LastLogon = DateTime.Now;
session.Save(newUser);
transaction.Commit();
session.Close();
transaction.Dispose();
Response.Write("Let's Go!!!!");
}
catch(Exception ex)
{
Response.Write(ex.ToString());
}