2013-05-28 61 views
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> 

现在,我已经在follwing 3个问题:

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

回答

1

您的映射对我来说似乎是正确的。你测试过了吗?我有一个类似的工作示例,完全和您对收藏的操作一样。所以在我看来,

Q1:似乎是一个很好的方法来做到这一点。第二季度:它可以按照你的方式进行映射。

Q3:当您使用BookSeriesID插入新书籍,然后使用该BookSeriesID加载书籍时,只要它与ID的条件相匹配,最近插入的书籍就会自动加载。

希望有帮助, 谢谢