我正在尝试创建一个持久化对象图的克隆,看起来像Session.Evict(PersistedObject)就是这样做的方法。通过从Session缓存中删除实例,我可以将其设置为新的“克隆”记录。
我尝试了三种方法,但都没有成功。
我很难找到关于这个主题的任何真实文档或示例。我找到了一些接近但没有真正解释我出错的地方
关于最后一个链接,我检查了我的Equals和GetHashCode方法,但是在调用Evict时它们没有被击中。此外,Session.Contains(objectToBeEvicted)在Evict()之前返回true
至于标题中的第二个问题 - 是否有更好的方法来解决这个问题?这不是一种罕见的情况
提前致谢
答案 0 :(得分:1)
回答最初的问题:
不,(?:(\d)\s+)(?:\d\s+)*|(?:(a)\s+)(?:a\s+)*
不限于代理,它可以从会话中删除任何对象。如果你遇到某种异常,很可能你做错了什么,但这个问题没有包含足够的信息来弄清楚是什么。
答案 1 :(得分:0)
尝试对对象进行深度克隆(.Net Deep cloning - what is the best way to do that?),然后将其添加到会话中。