【发布时间】:2014-06-16 14:19:52
【问题描述】:
我实现了本教程解释的工作单元: http://www.codeproject.com/Articles/543810/Dependency-Injection-and-Unit-Of-Work-using-Castle
虽然现在我遇到了一个奇怪的问题。
- 我在一个工作单元中(在事务中)从数据库中加载一个实体
- 我更新了该实体的属性
- 我在存储库中调用的不是 save 方法
- 事务已提交
在这种情况下,我希望更新的属性不会持久化到数据库中。但它是。因此,在我的会话中加载的实体被跟踪并提交到数据库而不调用保存。这是什么原因造成的?如果没有调用保存,有没有办法告诉 Nhibernate 不要更新这些实体?
我意识到我可以解决这个问题,以便在需要更新时只更新一个属性。唯一的风险是意外错误地更新属性,然后很难找到这个问题。 (例如一个新人,不知道这一点很容易犯错误)
【问题讨论】:
-
“因此,在我的会话中加载的实体被跟踪并提交到数据库而不调用 save” -- 在大多数情况下,这被视为一个巨大的好处 的 NHibernate -- 不必担心你的域模型何时被持久化到数据库中。
标签: c# nhibernate