title: Fluent NHibernate one-to-many Cascade.SaveUpdate() blocks updates to entity
body: <p>We have an Enrollment object that has a Student object and the Student object has many Enrollment objects.  If I leave off the Cascade.SaveUpdate() from the Enrollment's Student reference, updates to the Student table do not execute, but updates to the Enrollment object succeed.  But if I add the Cascade.SaveUpdate() on the Enrollment's Student reference, the updates to the Student table work fine, but updates to the Enrollment table fail.  No exceptions are thrown, the updates just don't succeed. </p>
  
  <p>There must be some way to be able to save objects on both sides of the relationship, but what am I missing?</p>
  
  <p>Here's the code snips, let me know if you need more:<br>
  EnrollmentMap: </p>
  
  <pre>
      References(x => x.Student)
                  .Column("student_id");// without the cascade on the next line, this fails to update changes to Student
                  //.Cascade.SaveUpdate();// when uncommented this updates changes to Student but blocks updates to Enrollment
  </pre>
  
  <p>StudentMap:</p>
  
  <pre>
      HasMany(x => x.Enrollments)
                  .KeyColumn("student_id")
                  .Inverse()
                  .Cascade.SaveUpdate();
  </pre>
  
  <p>Database call:</p>
  
  <pre>
  public Application GetApplication(long applicationId)
          {
              using (var session = sessionFactory.OpenSession())
              {
                  var query = session.Linq();
                  query.Expand(x => x.Enrollment);
                  query.Expand(x => x.Enrollment.Student);
                  var result = from entity in query
                               where entity.ApplicationId == applicationId
                               select entity;
                  return result.Count() > 0 ? result.First() : null;
              }
          }
  </pre>
  
  <p>Database save:<br></p>
  
  <pre>
  using (var session = sessionFactory.OpenSession())
              {
                  using (var transaction = session.BeginTransaction())
                  {
                      try
                      {
                          session.SaveOrUpdate(entity);
                          transaction.Commit();
                      }
                      catch(Exception ex)
                      {
                          transaction.Rollback();
                          throw;
                      }
                  }
              }
  </pre>