Nhibernate 提交保存在BeginTransaction之前所做的更改

Nhibernate 提交保存在BeginTransaction之前所做的更改,nhibernate,transactions,Nhibernate,Transactions,避免提交不需要的更改的最佳方法是什么 var a = session.Load<A>(id); a.Value = ParseExpressions(a.Value); using(var tx = session.BeginTransaction()) { // Do some work here tx.Commit(); } var a=session.Load(id); a、 Value=解析表达式(a.Value); 使用(var tx=session.Begin

避免提交不需要的更改的最佳方法是什么

var a = session.Load<A>(id);
a.Value = ParseExpressions(a.Value);

using(var tx = session.BeginTransaction())
{
  // Do some work here
  tx.Commit();
}
var a=session.Load(id);
a、 Value=解析表达式(a.Value);
使用(var tx=session.BeginTransaction())
{
//在这里做些工作
tx.Commit();
}
A
对象包含在完成工作之前需要计算的表达式,但在提交事务时,
A.Value
会保存到数据库中

我只希望保存在session.BeginTransaction()之后发生的更改

我尝试调用
session.Clear()
,但这会导致保存Guid Id为的实体,而不是更新


非常感谢您的帮助。

我不是100%确定我记得是否正确,但您应该能够将session.FlushMode设置为never,并显式保存要保存的更改

您可以使用事件系统跳过保存特定实体,但这会给您带来麻烦

您还可以从会话中退出特定实体


经验法则是:如果不想保存对实体的更改,不要修改该实体。调用commit时,所有更改都必须准备就绪。

这只会延迟刷新,而不会选择更改