У меня есть отношения многие ко многим:
Товар имеет много категорий, а категория имеет много товаров.
Скажи, что у меня
Shopping Category
Food Category
Product A - Shopping Category, Food Category
Product B - Shopping Category
Теперь я удаляю Shopping Category
. Я хочу, чтобы ссылка Product A
была удалена из Shopping Category
, и я хочу, чтобы Product B
был удален полностью.
Я бы закончил с:
Product A - Food Category.
Как мне это сделать в nhibernate (я использую свободный nhibernate).
Я пытался использовать Cascade DeleteOrphan
и AllDeleteOrphan
, но когда я это делаю и удаляю покупки, оба продукта A и B. удаляются.
public class CategoryMapping : ClassMap<Category>
{
public CategoryMapping()
{
Id(x => x.Id).GeneratedBy.GuidComb();
Map(x => x.Name).Not.Nullable().NvarcharWithMaxSize();
HasManyToMany(x => x.Products).Cascade.DeleteOrphan();
}
}
public class ProductMapping : ClassMap<Product>
{
public ProductMapping()
{
Id(x => x.Id).GeneratedBy.GuidComb();
Map(x => x.Name).Not.Nullable().NvarcharWithMaxSize();
HasManyToMany(x => x.Categories);
}
}
unitOfWork.BeginTransaction();
Category category =session.Load<Category>(id);
session.Delete(category);
unitOfWork.Commit();