我刚刚开始研究NHibernate 2天前,我正在寻找一个基于教程编写的CRUD方法.我的插入方法是:
using (ISession session = Contexto.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(noticia);
transaction.Commit();
session.Close();
}
Run Code Online (Sandbox Code Playgroud)
完整的"Contexto"代码在这里:http://codepaste.net/mrnoo5
我的问题是:我真的需要使用ITransaction transaction = session.BeginTransaction()和transaction.Commit(); ?
我问这个是因为我已经测试过运行没有这两行的网络应用程序,并且我已成功插入新记录.
如果可能的话,有人可以解释一下Itransaction的目的和方法提交吗?
谢谢
这是适当的通用NHibernate使用模式:
using (ISession session = sessionFactory.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
//Do the work here
transaction.Commit();
}
Run Code Online (Sandbox Code Playgroud)
所有这些都是确保一切按预期工作所必需的(除非您使用其他基础设施)
除了提交之外,关闭会话或对事务执行任何操作都是多余的,因为Dispose会话和事务的方法负责清理,包括在出现错误时进行回滚.
需要注意的是,在异常导致意外行为后,不要对会话执行任何操作,这是限制块内显式异常处理的另一个原因.
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |