title: SaveOrUpdate() on auto-mapped parent sets all child foreign keys to NULL
body: <p>I am using Fluent NHibernate and NHibernate.Core 3 beta 1. I have two classes:</p>
  
  <pre><code>public class Promotion
  {
      public Promotion()
      {
          PromotionEntrants = new List&lt;PromotionEntrant&gt;();
      }
  
      public virtual int Id { get; set; }        
      [Required]
      public virtual string Name { get; set; }
      ...
      public virtual IList&lt;PromotionEntrant&gt; PromotionEntrants { get; set; }
  }
  
  public class PromotionEntrant
  {
      public virtual int Id { get; set; }
      ...
      public virtual Promotion Promotion { get; set; }
  }
  </code></pre>
  
  <p>I am using auto mapping, which generates the schema I expect and things seem to be working as expected for the most part.</p>
  
  <p>I have the following action (ASP.NET MVC 3 RC) for saving/creating Promotions:</p>
  
  <pre><code>[HttpPost]
  public ActionResult SavePromo(Promotion promo)
  {
      if (ModelState.IsValid)
      {
          // .SaveOrUpdateCopy(promo) results in the same SQL
          NhSession.SaveOrUpdate(promo);
          NhSession.Flush();
      }
  
      ...
  }
  </code></pre>
  
  <p>This executes the expected "update Promotion ..." query, however it also executes the following:</p>
  
  <pre><code>UPDATE [PromotionEntrant] SET PromotionId = null WHERE PromotionId = @p0;@p0 = 1 [Type: Int32 (0)]
  </code></pre>
  
  <p>How do I prevent this from happening?</p>
  
  <p>My only guess is that it is seeing the empty List on the Promotion object (constructed by ASP.NET MVC thus not attached to the NH Session), taking that to mean there should be no child PromotionEntrants. To try and prevent that, I created the following auto-mapping override, but it does not make a difference.</p>
  
  <pre><code>public class PromotionMappingOverride : IAutoMappingOverride&lt;Promotion&gt;
  {
      public void Override(AutoMapping&lt;Promotion&gt; mapping)
      {
          mapping.HasMany(p =&gt; p.PromotionEntrants)
              .Cascade.None();
      }
  }
  </code></pre>
  
  <p>Any help would be much appreciated.</p>