在NHibernate上的多对多关系中添加自定义列

时间:2015-11-21 15:21:35

标签: asp.net database nhibernate fluent-nhibernate mapping

我有一个电影实体和一个演员实体,这两个实体有多对多关系,所以我把它映射为ManyToMany(x=>x.Movies)ManyToMany(x=>x.Actors)但我想要有角色扮演电影的演员应该留在MoviesActorsPivot作为新专栏

但是我怎样才能使用Fluent Nhibernate Mapping以我能得到的方式来保存数据,就像nhibernate一样简单?

不手动创建数据透视表,双方都设置HasMany(x => x.MoviesActorsPivot)并自行管理关联。

修改

或者,如果我在两侧创建HasMany(x => x.MoviesActorsPivot)映射它,我将如何设置插入和获取数据,如来自演员或所有演员的电影,获取所有角色名称?

1 个答案:

答案 0 :(得分:1)

答案是:

  

NHibernate原生 many-to-many 映射不支持配对表上的任何其他设置

但是,它可以替换为配对对象是第一级公民

public class MovieActor 
{
    public virtual Movie Movie { get; set; }
    public virtual Actor Actor { get; set; }
    ... // more properties here
    public virtual int Rating { get; set; }
}

public class Actor
{
    public virtual IList<MovieActor> Movies { get; set; }
}

public class Movie 
{
    public virtual IList<MovieActor> Actors { get; set; }    
}

这将是标准HasManyReferences映射。后来的查理会更容易

同时检查以下内容: