避免意外更改的最佳方法是什么?
var a = session.Load<A>(id);
a.Value = ParseExpressions(a.Value);
using(var tx = session.BeginTransaction())
{
// Do some work here
tx.Commit();
}
A
对象包含需要在完成工作之前进行评估的表达式,但是当提交事务时a.Value
将保存到数据库中。
我只想保存在 session.BeginTransaction()之后发生的更改。
我尝试过调用session.Clear()
,但这会导致保存带有Guid ID的实体而不是更新。
非常感谢任何帮助。
答案 0 :(得分:0)
不是100%确定我没记错,但您应该能够将session.FlushMode设置为never,并明确保存您要保存的更改。
答案 1 :(得分:0)
您可以使用事件系统跳过保存特定实体,但是您遇到了麻烦。
您还可以Evict()
会话中的特定实体。
经验法则是:如果您不想将更改保存到实体,不要修改实体。调用commit时,所有更改都必须准备就绪。