NHibernate:在读取期间没有使用Commit()可以使用(var tx = session.BeginTransaction()){}吗?

xyt*_*tec 4 nhibernate

快速问题..在检查某个终端ID是否可用的功能中,我可以按如下方式进行操作吗?

using (var tx = session.BeginTransaction())
{
    return ((new TerminalDAO(sm.Session)).Get(tid) == null) ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

或者建议使用Commit()吗?

Terminal terminal = null;
using (var tx = session.BeginTransaction())
{
    terminal = (new TerminalDAO(session)).Get(tid);
    tx.Commit();
}
return (terminal == null) ? true : false;
Run Code Online (Sandbox Code Playgroud)

Rad*_*ler 5

对于只读操作 - 我首先感谢你,即使对于只读操作也包括事务- 并且还建议使用回滚,实际上是显式回滚.

请检查以下内容:

我的明确Rollback()理由是:

  1. 为什么要回滚?我们知道它是READ,任何意外的WRITE都不是故意的
  2. 为何明确?以后来的任何人都可以看到它.自描述代码就是这样.依托违约可能以后会导致意外行为(如供应商改变了默认值)


归档时间:

查看次数:

203 次

最近记录:

11 年,2 月 前