gpt4 book ai didi

NHibernate:在读取过程中使用(var tx = session.BeginTransaction()){} 而不使用 Commit() 可以吗?

转载 作者:行者123 更新时间:2023-12-03 11:54:38 28 4
gpt4 key购买 nike

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

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

还是建议使用 Commit() 来实现?
Terminal terminal = null;
using (var tx = session.BeginTransaction())
{
terminal = (new TerminalDAO(session)).Get(tid);
tx.Commit();
}
return (terminal == null) ? true : false;

最佳答案

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

请检查这些:

  • Is it a better practice to explicitly call transaction rollback or let an exception trigger an implicit rollback?
  • Do I need to call rollback if I never commit?

  • 我的理由 显式 Rollback() 将是:
  • 为什么回滚 ?我们知道它是 READ,无意中出现任何意外的 WRITE
  • 为什么显式 ?以后来的人可以它。自描述代码是一种方式。依赖默认值可能会导致意外行为(例如供应商更改了默认值)
  • 关于NHibernate:在读取过程中使用(var tx = session.BeginTransaction()){} 而不使用 Commit() 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518003/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com