我已经实现了本教程所解释的工作单元: http://www.codeproject.com/Articles/543810/Dependency-Injection-and-Unit-Of-Work-using-Castle
虽然现在我遇到了一个奇怪的问题。
在这种情况下,我希望更新后的属性不会持久存储到数据库中。但它是。因此,在我的会话中加载的实体被跟踪并提交到数据库而不调用save。是什么造成的?如果不调用save,有没有办法告诉Nhibernate不要更新这些实体?
我意识到我可以解决这个问题,在我需要更新时只更新属性。唯一的风险是偶然更新财产,然后很难找到这个问题。 (例如,有些新人,不知道这很容易犯错误)
答案 0 :(得分:1)
解释需要了解瞬态和持久实体之间的区别。瞬态实体是一个新实体,通过调用Save()使其成为持久实体。使用NHibernate检索的实体已经是持久的,并且在刷新会话时将自动保存对其所做的任何更改。 NHibernate的目标是在会话结束时使数据库与域模型保持一致。