2010-04-23 44 views
3

我有一個應用程序跟蹤(爲了舉例)在給定的餐廳有什麼飲料可用。我的域模型看起來像:Fluent NHibernate - Cascade在模型中不存在明確的父 - >子關係時刪除一個子對象

class Restaurant { 
    public IEnumerable<RestaurantDrink> 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 
} 

我的數據庫模式是(我希望)關於你所期望的; 「RestaurantDrinks」本質上是餐廳和飲料之間的映射表,具有一些額外的屬性(如「DrinkVariety」)。

使用Fluent NHibernate來設置映射,我建立了一個從餐廳到RestaurantDrinks的「HasMany」關係,當它的父級餐廳被刪除時,後者將被刪除。

我的問題是,鑑於「飲料」沒有任何明確引用RestaurantDrinks的屬性(該關係僅存在於底層數據庫中),我可以設置一個映射,使RestaurantDrinks被刪除關聯飲料被刪除?

更新:我一直在試圖建立使用

References(x => x.Drink) 
    .Column("DrinkId") 
    .Cascade.All(); 

從事物的「RestaurantDrink」結束映射但這似乎並不工作(我仍然得到FK違反時刪除一份飲料)。

回答

相關問題