NHibernate事务提交,将提交什么数据库?

时间:2013-03-08 06:50:45

标签: 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

2 个答案:

答案 0 :(得分:2)

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

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

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();
  }
}

答案 1 :(得分:0)

将提交实体的所有属性。在您的配置中,您可以设置一个将sql输出到控制台的设置,您可以看到它在每次提交时发送的查询。