在 NHibernate 上的多对多关系上添加自定义列
Posted
技术标签:
【中文标题】在 NHibernate 上的多对多关系上添加自定义列【英文标题】:Add custom columns on many to many relationship on 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)
进行映射,我将如何设法插入和获取所有数据,例如来自某个演员的所有电影或所有参与电影表演的演员,获取所有角色名称?
【问题讨论】:
【参考方案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;
这将是标准的 HasMany
和 References
映射。而且后面的查询会更容易
还要检查这些:
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【讨论】:
以上是关于在 NHibernate 上的多对多关系上添加自定义列的主要内容,如果未能解决你的问题,请参考以下文章