Fluent NHibernate - 当模型中不存在明确的parent->子关系时,Cascade删除子对象

时间:2010-04-23 03:54:45

标签: c# fluent-nhibernate nhibernate-mapping

我有一个应用程序可以跟踪(为了举个例子)给定餐厅提供的饮料。我的域名模型如下:

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设置映射,我设置了从Restaurants到RestaurantDrinks的“HasMany”关系,导致后者在删除其父餐厅时被删除。

我的问题是,鉴于“Drink”没有明确引用RestaurantDrinks的任何属性(该关系仅存在于底层数据库中),我是否可以设置一个映射,如果它们相关联,将导致删除RestaurantDrinks饮料被删除?

更新:我一直在尝试使用

设置“RestaurantDrink”结尾的映射
References(x => x.Drink)
    .Column("DrinkId")
    .Cascade.All();

但这似乎不起作用(我在删除饮品时仍然会违反FK)。

1 个答案:

答案 0 :(得分:3)

这个问题的答案表明我想做的事情是不可能的:how to define an inverse cascade delete on a many-to-one mapping in hibernate