gpt4 book ai didi

NHibernate FlushMode - 为什么 NH 不能驱逐所有未保存的东西?

转载 作者:行者123 更新时间:2023-12-03 11:26:59 25 4
gpt4 key购买 nike

我花了一些时间搜索如何配置 NHibernate 的 FlushMode,以便它只能保存我明确称为 Save/Update/Delete 的对象,但我发现我不能这样做。取而代之的是,当我使用 NHibernate 事务管理时,我必须驱逐我修改过的每个对象(即使没有调用 Save/Update/Delete)。

我完全理解为什么 NHibernate 必须在某些 Find 操作之前刷新一些对象,但我并不担心陈旧的数据。我看到,也许在某些情况下,刷新所有已修改但未明确保存的内容可能很有用,但这不是我的情况。

我只是希望,在提交我的 session 后,NHibernate 插入/更新/删除我明确要求的所有内容,并驱逐其他所有内容。我的问题是:这种行为是否只是“还没有人停下来实现这一点”的问题,还是如果存在这种行为,是否还有其他要点会失败?

先感谢您。

飞利浦

最佳答案

Nhibernate 不这么认为。区别在于 transient 对象和持久对象,持久对象在刷新 session 时(可能在其他时间)与数据库同步。使用 NH 检索的对象是持久的,并且会在刷新 session 时保存而不调用 Save(或 SaveOrUpdate),因为它们已经是持久的。有多种控制 FlushMode 的选项,但没有任何选项可以使其按您希望的方式工作。

一种潜在的解决方法可能是使用 IStatelessSession 检索对象并通过单独的 ISession 处理操作。

你想解决什么问题?

关于NHibernate FlushMode - 为什么 NH 不能驱逐所有未保存的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389346/

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