表之间有中间表的非hibernate映射
本文关键字:hibernate 映射 中间 之间 | 更新日期: 2023-09-27 18:07:02
我有以下代码:
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 <--> HotelPhoto
和HotelPhoto <--> Photo
的关系
我的问题是:我是否可以配置Hotel
类和Hotel
表之间的某种映射,以获得Photo
的列表,而无需创建新类HotelPhoto
?(我想要一个照片列表,而不是一个可以从中获取照片的HotelPhoto列表)。
不知何故,我想从Hotel类访问Photo表,而不需要任何HotelPhoto类,因为我知道HotelPhoto表只包含Hotel和Photo表的id。
提前感谢,Tamash
您可以使用many-to-many
-mapping,例如:
酒店映射文件,应该包含如下内容:
<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