2013-05-28 86 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的條件相匹配,最近插入的書籍就會自動加載。

希望有幫助, 謝謝