问题 从NHibernate会话中断开对象


在我的nhibenate会话中,我使用AutoMapper映射对象,并在afterMap操作中创建对象的新实例,因为我从数据库中提取对象以进行属性比较。 因此,AutoMapper创建一个具有相同ID的对象的两个实例。 当我尝试提交会话时,我得到错误,我必须使用相同的ID对象。

所以我想在属性比较后断开我提取的对象。 之后我会提交会议

我是怎么做到的?

谢谢!


4815
2018-03-06 08:27


起源



答案:


您可以使用 session.Evict(persistentObject) 从会话中驱逐持久对象。这将从第一级缓存中删除对象,从而允许您刷新会话。


13
2018-03-06 08:33



是否可以从所有会话中删除它? - Joel
除非你做一些真正非常时髦的事情,否则你的对象最多只会连接一个会话:一个会给它充气的会话 - mookid8000
我真的希望这是真的。我有一些传统的代码做得很有趣,所以我遇到了这个例外,我希望会有一些hackish的解决方法,但是哦...... - Joel


答案:


您可以使用 session.Evict(persistentObject) 从会话中驱逐持久对象。这将从第一级缓存中删除对象,从而允许您刷新会话。


13
2018-03-06 08:33



是否可以从所有会话中删除它? - Joel
除非你做一些真正非常时髦的事情,否则你的对象最多只会连接一个会话:一个会给它充气的会话 - mookid8000
我真的希望这是真的。我有一些传统的代码做得很有趣,所以我遇到了这个例外,我希望会有一些hackish的解决方法,但是哦...... - Joel