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

Add custom columns on many to many relationship on NHibernate

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

但是我怎样才能使用 Fluent Nhibernate 映射以一种可以像 nhibernate 一样简单地获取和保存数据的方式来做到这一点?

不是手动创建枢轴 table 而是在两侧创建 HasMany(x => x.MoviesActorsPivot) 并由我自己管理关联。

编辑:

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

答案是:

NHibernate native many-to-many mapping does not support any additional setting on the pairing table

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

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 映射。而且后面的查询会更简单

同时检查这些:

  • Nhibernate: How to represent Many-To-Many relationships with One-to-Many relationships?
  • nhibernate many to many with multiple table
  • many-to-many with extra columns nhibernate