title: Session evict and merge for entity update
body: <p>I found this piece of code: </p>
  
  <pre><code>    public virtual void Update(T entity) {
          Logger.Debug("Update {0}", entity);
          Session.Evict(entity);
          Session.Merge(entity);
      }
  </code></pre>
  
  <p>Can you explain what are pros and cons of calling this over calling update on session? 
  Why is this working, what are mechanics behind this code? Is it not too hacky?</p>