NHibernate需要一个事务才能使更新成功

时间:2013-01-10 12:50:04

标签: c# nhibernate

使用NHibernate,在我的NUnit测试中,我可能会调用session.Delete(_user),其中_user是持久对象。

我的问题似乎是,除非我在交易中包含此内容和任何其他更新,否则它永远不会成功。

所以,

CurrentSessionContext.Bind(GetHibernateSessionFactory().OpenSession());
ITransaction trans=session.BeginTransaction()
session.Delete(_user);
trans.Commit();
CurrentSessionContext.Unbind(GetHibernateSessionFactory())

作品。

但是,

CurrentSessionContext.Bind(GetHibernateSessionFactory().OpenSession());
session.Delete(_user);
CurrentSessionContext.Unbind(GetHibernateSessionFactory())

没有,但报告没有例外或问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

NHibernate只会在刷新会话时向数据库发送更新/插入/删除。

您可以通过调用Flush()显式地执行此操作,但您还应该查看配置:您也可以在那里指定默认的刷新行为。

有趣的读物:

NHibernate ISession Flush: Where and when to use it, and why? NHibernate Flush-- How it works?