会话逐出并合并实体更新

时间:2013-05-15 14:30:17

标签: nhibernate data-access-layer

我找到了这段代码:

    public virtual void Update(T entity) {
        Logger.Debug("Update {0}", entity);
        Session.Evict(entity);
        Session.Merge(entity);
    }

你能解释一下,在调用会话更新时调用它的优缺点是什么? 为什么这有效,这段代码背后的机制是什么?这不是太讨厌吗?

1 个答案:

答案 0 :(得分:0)

Session.Evict会从会话中驱逐单个对象,例如,如果您在会话中已经有obj并且您尝试调用session.Update(entity),则会收到一个异常,说明此obj在会话中,您无法更新。

Session.Merge会将单个对象与会话(缓存)上的现有对象合并并更新。

看看:https://stackoverflow.com/a/9161057/316799