c# - Fluent NHibernate - 当模型中不存在显式父->子关系时级联删除子对象

标签 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”本质上是 Restaurants 和 Drinks 之间的映射表,具有一些额外的属性(例如添加了“DrinkVariety”)。

使用 Fluent NHibernate 设置映射,我设置了从 Restaurants 到 RestaurantDrinks 的“HasMany”关系,这导致 RestaurantDrinks 在其父 Restaurant 被删除时被删除。

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

更新:我一直在尝试使用“RestaurantDrink”端设置映射

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

但这似乎不起作用(我在删除饮料时仍然遇到 FK 违规)。

最佳答案

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

关于c# - Fluent NHibernate - 当模型中不存在显式父->子关系时级联删除子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696105/

相关文章:

c# - CSLA 可编辑网格

c# - MongoDb 如何查找具有无效数据的元素

c# - Guid 全部为 0(零)?

c# - 流利的 : Table name different from entity name

nhibernate - IndexOutOfRangeException 深入 NHibernate

使用 installutil.exe 发布时,c# Windows Service 不起作用

fluent-nhibernate - 我可以制定包括父键名称的Fluent NHibernate外键约定吗?

NHibernate 2.1.2 抛出 DateTime 空溢出异常

c# - Nhibernate 不级联删除

c# - Cascade.All() EXCEPT Delete 是否有可能?