gpt4 book ai didi

NHibernate 提交数据库更改而无需显式调用保存或更新

转载 作者:行者123 更新时间:2023-12-03 16:29:39 24 4
gpt4 key购买 nike

我在 ASP.NET 中使用 Nhibernate 2.0。
我在页面请求时开始事务并在最后提交事务。
在页面期间:
- 我得到一个对象
- 我改变了对象属性
- 我验证对象
- 如果验证没问题,我会对该对象调用 save-update
- 如果验证错误,我不会对该对象进行任何保存更新调用
- 我总是在页面末尾提交事务。

问题是,当验证错误并且我没有在对象上调用 save-update 时,commit transactin 会在数据库中提交更改。

我将 FlushMode 设置为 Never 但没有任何变化。

有建议吗?我错了什么?

最佳答案

During the page: - I get an object



如果您从 session 中获取对象,那么您就误解了 Update。更新用于将现有实体附加到 session 。如果您从 session 中获取实体,则该实体已附加到该 session ,因此更新毫无意义。

在这种情况下,SaveOrUpdate 与 Update 没有关系——同样的事情。

NHibernate 跟踪 session 中对象的更改。当您提交事务或刷新 session 时,它将检查任何更改(有更改),然后将这些更改提交到数据库。重点是跟踪哪些对象被更改(脏)不是你的工作,而是 NHibernates。

其他 ORM 可能要求您自己跟踪更改并对要保留的任何更改的对象显式调用某种更新,但 NH 不会那样工作。

所以回答你的问题,如果验证失败,你不想提交事务。

NH 还坚持工作单元模式。因此,如果您在与验证工作的业务逻辑不同的程序逻辑部分中进行提交,则可能会造成摩擦。

关于NHibernate 提交数据库更改而无需显式调用保存或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1380581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com