流利的 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 多对多创建附加表的主要内容,如果未能解决你的问题,请参考以下文章

您如何在流利的 nhibernate 中映射和使用连接表?

流利的 NHibernate 多对多与额外的列不插入

Fluent NHibernate:如何在关系表上映射具有附加属性的多对多关系?

NHibernate + Fluent NHibernate 异常

首先创建代码,多对多,关联表中的附加字段

NHibernate教程(11)--多对多关联查询