我有一个多对多的关系:
产品有很多类别,类别有很多产品。
说我有
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();