title: Fluent NHibernate - Cascade delete a child object when no explicit parent->child relationship exists in the model
body: <p>I've got an application that keeps track of (for the sake of an example) what drinks are available at a given restaurant.  My domain model looks like:</p>
  
  <pre><code>class Restaurant {
      public IEnumerable&lt;RestaurantDrink&gt; GetRestaurantDrinks() { ... }
      //other various properties
  }
  
  class RestaurantDrink {
      public Restaurant Restaurant { get; set; }
      public Drink { get; set; }
      public string DrinkVariety { get; set; }  //"fountain drink", "bottled", etc.
      //other various properties
  }
  
  class Drink {
      public string Name { get; set; }
      public string Manufacturer { get; set; }
      //other various properties
  }
  </code></pre>
  
  <p>My db schema is (I hope) about what you'd expect; "RestaurantDrinks" is essentially a mapping table between Restaurants and Drinks with some extra properties (like "DrinkVariety" tacked on).</p>
  
  <p>Using Fluent NHibernate to set up mappings, I've set up a "HasMany" relationship from Restaurants to RestaurantDrinks that causes the latter to be deleted when its parent Restaurant is deleted.</p>
  
  <p>My question is, given that "Drink" does not have any property on it that explicitly references RestaurantDrinks (the relationship only exists in the underlying database), can I set up a mapping that will cause RestaurantDrinks to be deleted if their associated Drink is deleted?</p>
  
  <p><strong>Update:</strong> I've been trying to set up the mapping from the "RestaurantDrink" end of things using</p>
  
  <pre><code>References(x =&gt; x.Drink)
      .Column("DrinkId")
      .Cascade.All();
  </code></pre>
  
  <p>But this doesn't seem to work (I still get an FK violation when deleting a Drink).</p>