0

我有以下实体Book,我想在其中对书籍进行分组(其中的每本书都BookSeries应该参考该系列中的所有其他书籍)。我希望我的班级将具有如下定义:

public class Book {
    public int Id { get; set; }
    public string Title { get; set; }
    public List<Book> BookSeries { get; set; }
}

我希望 NHibernate 映射如下:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Model" assembly="Model">
<class name="Book" table="Books" lazy="false">
    <id name="Id" column="Id" type="int" unsaved-value="">
        <generator class="native"/>
    </id>
    <bag name="BookSeries" table="BookSeries">
        <key column="Id"/>
        <many-to-many class="Book" column="BookSeriesId" />
    </bag>
</class>
</hibernate-mapping>

现在,我有以下 3 个问题:

  1. 模拟这种关系(自我引用)的最佳方法是什么?
  2. 这应该如何使用 NHibernate 映射?
  3. 在 BookSeries 中插入新书时,如何确保新书引用了该系列中的所有书(反之亦然)?
4

1 回答 1

1

你的映射对我来说似乎是正确的。你测试过吗?我有一个类似的工作示例,它与您对集合所做的完全一样。所以在我看来,

Q1:似乎是一个很好的方法。

Q2:它可以按照您的方式进行映射。

Q3:当您插入一本带有 BookSeriesID 的新书,然后您使用该 BookSeriesID 加载一本书时,如果最近插入的书符合 ID 的条件,它将自动加载。

希望有帮助,谢谢

于 2013-05-29T00:42:23.350 回答