У меня есть приложение, которое отслеживает (для примера), какие напитки доступны в данном ресторане. Моя модель домена выглядит так:
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 для настройки сопоставлений, я установил отношение «HasMany» от Restaurants к RestaurantDrinks, которое приводит к удалению последнего при удалении родительского ресторана.
У меня вопрос, учитывая, что у «Напитка» нет какого-либо свойства, которое явно ссылается на RestaurantDrinks (связь существует только в базовой базе данных), могу ли я установить отображение, которое приведет к удалению RestaurantDrinks, если их связанный Напиток удален?
Обновление: Я пытался настроить отображение с конца "RestaurantDrink", используя
References(x => x.Drink)
.Column("DrinkId")
.Cascade.All();
Но, похоже, это не работает (я все еще получаю нарушение FK при удалении Напитка).