如果你Evict
在你之后Delete
,但在你之前Flush
,你会没事的;它将滚出您的挂起删除。
// Act
using (ISession session = _factory.OpenSession())
using (ITransaction tx = session.BeginTransaction())
{
session.Save(expected);
session.Flush();
session.Delete(expected);
session.Evict(expected);
tx.Commit();
}
using (ISession session = _factory.OpenSession())
using (ITransaction tx = session.BeginTransaction())
{
actual = session.Get<Person>(expected.Id);
var count = actual.Roles.Count;
}
// Assert
expected.ShouldHave().AllProperties().EqualTo(actual); // succeeds; record is not deleted or otherwise molested.
但是,一旦刷新,就没有撤销/重新保存的好方法。首先弄清楚如何避免删除对象,避免在删除和恢复之间刷新,或者回滚事务以撤消删除。另一种选择,如果可以将数据重新保存为新记录(只要保留值),则只需克隆已删除的记录并保存。