流畅的NHibernate可以创建额外的表格

时间:2013-12-09 06:35:19

标签: nhibernate fluent-nhibernate

我有两个表“召回”和“服务”,我需要它们之间有很多对。 我使用流畅的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 个答案:

答案 0 :(得分:1)

你如何定义“正确”,你想要实现什么? 我从来没有听说过任何关于使用数据透视表的关系的干净解决方案。


[快速浏览一下你的映射]:只有一个“ManyToMany”应该是Inverse