我找到了这段代码:
public virtual void Update(T entity) {
Logger.Debug("Update {0}", entity);
Session.Evict(entity);
Session.Merge(entity);
}
你能解释一下,在调用会话更新时调用它的优缺点是什么? 为什么这有效,这段代码背后的机制是什么?这不是太讨厌吗?
答案 0 :(得分:0)
Session.Evict
会从会话中驱逐单个对象,例如,如果您在会话中已经有obj
并且您尝试调用session.Update(entity)
,则会收到一个异常,说明此obj
在会话中,您无法更新。
Session.Merge
会将单个对象与会话(缓存)上的现有对象合并并更新。