使用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())
没有,但报告没有例外或问题。
有什么想法吗?
答案 0 :(得分:3)
NHibernate只会在刷新会话时向数据库发送更新/插入/删除。
您可以通过调用Flush()显式地执行此操作,但您还应该查看配置:您也可以在那里指定默认的刷新行为。
有趣的读物:
NHibernate ISession Flush: Where and when to use it, and why? NHibernate Flush-- How it works?