Zot*_*ote 5 nhibernate transactions
A对我的MVC应用程序有一个动作,它有一个id并返回一个人的名字.
最佳做法是什么?我正在关注NHProf提示,但代码听起来有点奇怪或者对我而言.
using (var session = Helper.SessionFactory.OpenStatelessSession())
{
using (var tran = session.BeginTransaction(IsolationLevel.ReadCommitted))
{
return session.Query<Person>().Where(x => x.Id == id).Select(x => x.Name).SingleOrDefault();
tran.Rollback();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为 NProf 警报页面解释得很好 -
http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions
基本上,它是说,如果您自己不管理事务,数据库将创建一个“隐式事务”并自动提交每个语句(包括查询)。误解是事务仅对插入/更新操作有用。
在上面的示例中,这并不是什么大问题,因为您的事务无论如何只执行一条语句。但是,如果您的方法正在运行多个语句,那么将它们包装在事务中将是一个很好的做法。
| 归档时间: |
|
| 查看次数: |
3513 次 |
| 最近记录: |