2013-12-09 58 views
0

我有两个表“回忆”和“服务”,我需要他们之间的多对多。 我用流利的NHibernate的映射,但它的名字“servicetorecall”流利NHibernate多对多创建附加表格

  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

如何定义“正确”,你想达到什么目的? 我从来没有听说过任何清理解决方案的多对多关系,其中不是使用数据透视表。


[在你的映射快速一瞥]:只有“多对多”的一个应该是逆

相关问题