我有两个实体,相册和照片,之间有多对多的关系。一切正常。我想要的是添加一个关系属性,即除了album_id和photo_id之外的映射的额外属性,例如添加照片的日期时间或者说该照片在该相册上是否可见的属性。
public class Photo
{ public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual ICollection<Album> Albums { get; set; }
}
public class Album
{
public virtual int Id {get;set;}
public virtual string Title {get;set;}
public virtual ICollection<Photo> Photos { get; set; }
}
目前的映射如下:
public class PhotosMap : ClassMap<Photo>
{
public PhotosMap()
{
Id(x => x.Id);
Map(x => x.Title);
HasManyToMany<Album>(x => x.Albums).Not.LazyLoad().Table("album_photos");
Table("photos");
}
}
public class AlbumsMap : ClassMap<Album>
{
public AlbumsMap()
{
Id(x => x.Id);
Map(x => x.Title);
HasManyToMany<Photo>(x => x.Photos).Inverse().Not.LazyLoad().Table("album_photos");
Table("album");
}
}
答案 0 :(得分:2)
你做不到。您现在需要显式建模并映射该映射表。
答案 1 :(得分:0)
我有这样的事情:
HasManyToMany<EnterpriseRelation>(x => x.SharedIn)
.Table("SharedDocs")
.ChildWhere("State=" + StateId.Accepted) // this filter out all relation that aren't accepted
.ParentKeyColumn("DocId")
.ChildKeyColumn("RelationId");
StateId.Accepted
是一个常数,所以没问题,但我认为你不能做得更多(有了这个)。