表之间具有中间表的Nhibernate映射

时间:2011-08-31 11:47:22

标签: c# nhibernate mapping

我有以下代码:

public class Hotel
{
  public int ID
  {  
    get;set
  } 

  public IList<Photo> Photos
  {
    get;set;
  }
  //...other code
}

public class Photo
{
  public int ID
  {
     get;set;
  }
  //...other fields
}

在数据库中,我有以下表格:

Photo: ID, Url, //.. other fields
HotelPhoto:ID, PhotoID, HotelID
Hotel:ID, Location, //..other fields

Hotel <--> HotelPhotoHotelPhoto <--> Photo之间的关系。

我的问题是:我可以以某种方式配置Hotel类和Hotel表之间的映射,以获取Photo的列表,而无需创建新的类HotelPhoto吗? (我想要一张照片列表,而不是要从中获取照片的HotelPhoto列表。)

不知何故,我想从Hotel类访问Photo表而没有任何类的HotelPhoto,因为知道表HotelPhoto只包含Hotel和Photo表的ID。

提前致谢, Tamash

1 个答案:

答案 0 :(得分:3)

您可以使用many-to-many - 映射,例如:

酒店映射文件,应该包含某事。像这样:

<set name="Photos" table="HotelPhoto">
  <key column="HotelId" />
  <many-to-many class="Photo" column="PhotoId"/>
</set>

对于照片映射文件,您可以使用......像这样:

<set name="Hotels" table="HotelPhoto">
  <key column="PhotoId" />
  <many-to-many class="Hotel" column="HotelId"/>
</set>

请注意,映射未经过测试,并假设Photo有一个酒店列表(否则您的db-schema对我来说没有意义)。

您可以在此处找到文档。 http://nhibernate.info/doc/nh/en/index.html#collections-ofvalues