title: NHibernate Session.Flush() Sending Update Queries When No Update Has Occurred
body: <p>I have an NHibernate session. In this session, I am performing exactly 1 operation, which is to run this code to get a list:</p>
  
  <pre><code>public IList&lt;Customer&gt; GetCustomerByFirstName(string customerFirstName)
  {
  return _session.CreateCriteria(typeof(Customer))
      .Add(new NHibernate.Expression.EqExpression("FirstName", customerFirstName))
      .List&lt;Customer&gt;();
  }
  </code></pre>
  
  <p>I am calling <code>Session.Flush()</code> at the end of the <code>HttpRequest</code>, and I get a <code>HibernateAdoException</code>. NHibernate is passing an update statement to the db, and causing a foreign key violation. If I don't run the <code>flush</code>, the request completes with no problem. The issue here is that I need the flush in place in case there is a change that occurs within other sessions, since this code is reused in other areas. Is there another configuration setting I might be missing?</p>
  
  <hr>
  
  <p>Here's the code from the exception:</p>
  
  <pre><code>[SQL: UPDATE CUSTOMER SET first_name = ?, last_name = ?, strategy_code_1 = ?, strategy_code_2 = ?, strategy_code_3 = ?, dts_import = ?, account_cycle_code = ?, bucket = ?, collector_code = ?, days_delinquent_count = ?, external_status_code = ?, principal_balance_amount = ?, total_min_pay_due = ?, current_balance = ?, amount_delinquent = ?, current_min_pay_due = ?, bucket_1 = ?, bucket_2 = ?, bucket_3 = ?, bucket_4 = ?, bucket_5 = ?, bucket_6 = ?, bucket_7 = ? WHERE customer_account_id = ?]
  </code></pre>
  
  <p>No parameters are showing as being passed.</p>