gpt4 book ai didi

c# - NHibernate 将缓存实体重新附加到不同 session 的正确方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:45 24 4
gpt4 key购买 nike

我正在使用 NHibernate 从我的数据库中查询对象列表。在获得对象列表之后,我遍历对象列表并应用距离近似算法来查找最近的对象。我认为这个获取对象列表并对它们应用算法的功能是一项繁重的操作,所以我将我从算法中找到的对象缓存在 HttpRuntime.Cache 中。

在这一点之后,每当我再次获得提供的输入时,我都可以直接从缓存中提取对象,而不必访问数据库并遍历列表。我的对象是一个附加了集合的复杂对象,在我返回完整对象列表的查询中我不会急切地带回任何子集合所以当我读取我的缓存对象时我需要延迟加载才能正常工作能够完整地展示对象。

最初我尝试使用它来将我的缓存对象重新关联回新 session

_session.Lock(obj, LockMode.None);

但是当从另一个实例同时访问页面时我得到错误

Illegal attempt to associate a collection with two open sessions

然后我尝试了一些不同的东西

_session.Merge(obj);

但是在 NHProf 中观察这个输出显示它正在删除我的对象包含的集合并将其与我的对象重新关联,这不是我想要的,尽管它似乎工作正常。

正确的做法是什么?这些似乎都不对。

最佳答案

Lock 应该可以。我认为您的问题是原始 session 尚未处理。缓存对象后尝试处理原始 session 。

关于c# - NHibernate 将缓存实体重新附加到不同 session 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932716/

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