流利的 NHibernate 多对多创建附加表
Posted
技术标签:
【中文标题】流利的 NHibernate 多对多创建附加表【英文标题】:fluent NHibernate many to many creates additional table 【发布时间】:2013-12-09 06:35:19 【问题描述】:我有两个表“召回”和“服务”,我需要它们之间的多对多。 我使用流利的 NHibernate 映射,但它创建了名为“servicetorecall”的附加表
public class Recall : BaseDomain
public virtual string Name get; set;
public virtual string PersonPosition get; set;
public virtual string RecallText get; set;
private ICollection<Service> _services = new List<Service>();
public virtual ICollection<Service> Services
get return _services;
set _services = value;
public class Service : BaseDomain
public virtual string Name get; set;
public virtual string Url get; set;
public virtual string ImgPath get; set;
public virtual string ShortContent get; set;
public virtual string Content get; set;
public virtual bool ServiceIsVisible get; set;
ICollection<Recall> _recalls = new List<Recall>();
public virtual ICollection<Recall> Recalls
get return _recalls;
set _recalls = value;
映射:
class RecallMappingOverride : IAutoMappingOverride<Recall>
public void Override(AutoMapping<Recall> mapping)
mapping.Cache.ReadWrite();
mapping.HasManyToMany(q => q.Services).Table(MappingNames.RECALLS_RELATIONS)
.ParentKeyColumn(MappingNames.RECALL_ID)
.ChildKeyColumn(MappingNames.SERVICE_ID).Inverse().Cascade.All();
public class ServiceMappingOverride : IAutoMappingOverride<Service>
public void Override(AutoMapping<Service> mapping)
mapping.Cache.ReadWrite();
mapping.HasManyToMany(q => q.Recalls).Table(MappingNames.RECALLS_RELATIONS) .ParentKeyColumn(MappingNames.SERVICE_ID).ChildKeyColumn(MappingNames.RECALL_ID)
.Inverse().Cascade.All();
我尝试更改级联,但这没有帮助。我也对其他实体做了同样的事情,它可以正常工作它是什么类型的魔法?
【问题讨论】:
【参考方案1】:你如何定义“正确”,你想达到什么? 我从未听说过不使用数据透视表的多对多关系的任何干净解决方案。
[快速浏览您的映射]:“ManyToMany”中只有一个应该是 Inverse
【讨论】:
以上是关于流利的 NHibernate 多对多创建附加表的主要内容,如果未能解决你的问题,请参考以下文章
Fluent NHibernate:如何在关系表上映射具有附加属性的多对多关系?