【问题标题】:Add custom columns on many to many relationship on NHibernate在 NHibernate 上的多对多关系上添加自定义列
【发布时间】:2016-02-24 00:35:17
【问题描述】:

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

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

不手动创建数据透视表并在两侧创建HasMany(x => x.MoviesActorsPivot) 并由我自己管理关联。

编辑:

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

【问题讨论】:

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


    【解决方案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 映射。而且后面的查询会更容易

    还要检查这些:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-03
      • 2013-04-07
      • 2011-08-18
      • 2013-04-08
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多