Asp.net 在NHibernate上的多对多关系上添加自定义列
我有一个电影实体和一个演员实体,这两个实体有一个多对多关系,所以我把它映射为Asp.net 在NHibernate上的多对多关系上添加自定义列,asp.net,database,nhibernate,fluent-nhibernate,mapping,Asp.net,Database,Nhibernate,Fluent Nhibernate,Mapping,我有一个电影实体和一个演员实体,这两个实体有一个多对多关系,所以我把它映射为ManyToMany(x=>x.Movies)和ManyToMany(x=>x.Actors)但是我想让演员在电影中扮演的角色,它应该作为一个新的专栏留在moviescoctorspivot上 但是,我如何使用Fluent Nhibernate映射,以一种我可以像Nhibernate一样轻松获取和保存数据的方式来实现这一点呢 不手动创建透视表,使两侧都有许多(x=>x.moviescoctorspivot),并由我自己管
ManyToMany(x=>x.Movies)
和ManyToMany(x=>x.Actors)
但是我想让演员在电影中扮演的角色,它应该作为一个新的专栏留在moviescoctorspivot
上
但是,我如何使用Fluent Nhibernate映射,以一种我可以像Nhibernate一样轻松获取和保存数据的方式来实现这一点呢
不手动创建透视表,使两侧都有许多(x=>x.moviescoctorspivot)
,并由我自己管理关联
编辑:
或者,如果我将其映射为在两侧创建HasMany(x=>x.MoviesActorsPivot)
,我将如何插入和获取所有数据,就像演员或电影中所有演员的所有电影一样,获取所有角色名称?答案是:
NHibernate native多对多
映射不支持配对表上的任何其他设置
但是,它可以被作为一级公民的配对对象所取代
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; }
}
公共级电影演员
{
公共虚拟电影{get;set;}
公共虚拟参与者{get;set;}
…//这里有更多的属性
公共虚拟整数评级{get;set;}
}
公共级演员
{
公共虚拟IList电影{get;set;}
}
公映
{
公共虚拟IList参与者{get;set;}
}
这将是标准的有许多
和引用
映射。以后的询问会更容易
同时检查以下各项: