如何使用多对多关系对实体进行分组

时间:2013-05-28 09:30:39

标签: .net nhibernate many-to-many grouping relationship

我有以下实体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>

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

问题3:当您使用BookSeriesID插入新书然后加载具有该BookSeriesID的书籍时,如果它与ID的条件匹配,则会自动加载最近插入的书籍。

希望有所帮助, 感谢

相关问题