c# - NHibernate事务提交,什么会提交到数据库?

标签 c# nhibernate transactions

我有以下代码:

using (var session = SessionFactory.OpenSession())
{
  var entity = session.Get<Entity>(id);
  entity.Property1 = "new value";
  using (var tx = session.BeginTransaction())
  {
    entity.Property2 = "new value";
    tx.Commit();
  }
}

现在,我很困惑,当 tx.Commit() 时,什么将提交给数据库? 是只提交 Property2(在事务范围部分),还是同时提交 Property1Property2

最佳答案

您对持久对象所做的任何更改都将在刷新 session 时发送到数据库,并且提交事务将刷新 session 。请注意,在某些情况下, session 可能会自动刷新,例如使用数据库生成的标识符或发出查询时。

令人困惑的是,在 NHibernate 中,您可以拥有仅包含提交的事务 block 。为了便于阅读,我将其重写为:

using (var session = SessionFactory.OpenSession())
{
  using (var tx = session.BeginTransaction())
  {
      var entity = session.Get<Entity>(id);
      entity.Property1 = "new value";
      entity.Property2 = "new value";
      tx.Commit();
  }
}

关于c# - NHibernate事务提交,什么会提交到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288348/

相关文章:

c# - C# 中可选 ref 参数的解决方法

c# - 在 NHibernate 中设置超时过期

.net - 将 Quartz .NET 与 NHibernate 集成

java - 重新抛出已检查的异常

Php pdo rollBack() 不适用于更新语句

C# - 仅使用线程运行立即函数?

c# - 在 asp.net MVC Controller 中调用异步外部 Web 服务

nhibernate - NHibernate QueryOver如何在未声明的关系上加入

c++ - 编写一个程序,用 C++ 进行基本的 atms 交易。它会减少某物的使用次数

c# - 将行添加到 GridView