我有这些课程:
public class User
{
public IList<Order> LastOrders { get; set;}
}
public class Order {}
LastOrders是多对多地图。
当我删除订单时,如何判断(Fluent)NHibernate从所有用户的LastOrders集合中删除Order?有可能吗?
即(跳过数据库保存/加载代码)
user.LastOrders.Add(order);
Session.Delete(order);
Assert(!user.LastOrders.Contains(order));
目前我在删除之前手动执行(查找用户,更新集合,保存)。如果没有这个,NHibernate就无法删除Order,因为它被用户的LastOrders引用。
答案 0 :(得分:0)
如果将集合映射设置为忽略缺失的行,则可以安全地删除该订单。
这将在集合表中留下孤立的行,NHibernate将忽略这些行。这些可以在一些批处理过程中清理。
HasManyToMany(x => x.LastOrders)
.NotFound.Ignore();
这将为您提供比当前方法更快的删除。缺点是您的收集表在一段时间内与您的模型不一致。