I have following code:
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
会被提交,还是 Property1
和 Property2
都会被提交?
ISession.Flush()
和ITransaction.Commit()
之间有什么区别?它们都可以将数据同步到数据库,但使用ITransaction
必须在提交之前开始它,而ISession.BeginTransaction()
是一个令人困惑的操作,因为会提交会话中的所有更改,但不会提交事务范围内的更改(从BeginTransaction()
到Commit()
)。 - JasonMing