如何使用 NHibernate 从数据库中自动删除?

How to make auto remove from DataBase with NHibernate?

我有一个 class,其中包含另一个 class 的列表:

public class Book
{
   ...

   [DataMember]
   public virtual IList<BookOption> Options { get; set; }

   ...
}

当我尝试更新我的一本书时,我也在更新选项列表中的更改记录,并且我正在添加新的记录,它们已被添加。所以一切看起来都很好。 我正在使用 NHibernate(不是流利的)。

问题是:据我了解,NHibernate 没有检测对象(BookOption)应该更新或插入数据库的问题,但是什么关于移除? 在某些情况下,一些旧的 Book 选项在更新的 Book 版本中不存在(删除)。我只需要现有的选项(在上一个版本中),所以我需要从数据库中删除不再使用的选项,而是我只向它们添加新的选项(书籍更新后旧选项仍在数据库中)。

我可以用额外的方法(特别是删除选项)来实现,但是...我想在做之前尝试别的东西。

如果对象列表中不存在记录,NHibernate 能否提供从数据库中删除记录的功能?

P.S对不起我的英语不好

nHibernate 为此目的在集合映射中提供了一个选项:cascade="all-delete-orphan"

您可以在此处阅读更多详细信息: Cascading lifecycle