fluent NHibernate多对多创建附加表
我有两个表“召回”和“服务”,它们之间需要多对多。 我使用fluent NHibernate映射,但它会创建名为“servicetorecall”的附加表fluent NHibernate多对多创建附加表,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我有两个表“召回”和“服务”,它们之间需要多对多。 我使用fluent NHibernate映射,但它会创建名为“servicetorecall”的附加表 公共类调用:BaseDomain { 公共虚拟字符串名称{get;set;} 公共虚拟字符串PersonPosition{get;set;} 公共虚拟字符串RecallText{get;set;} 私有ICollection_services=新列表(); 公共虚拟ICollection服务 { 获取{return\u services;}
公共类调用:BaseDomain
{
公共虚拟字符串名称{get;set;}
公共虚拟字符串PersonPosition{get;set;}
公共虚拟字符串RecallText{get;set;}
私有ICollection_services=新列表();
公共虚拟ICollection服务
{
获取{return\u services;}
设置{u services=value;}
}
}
公共类服务:BaseDomain
{
公共虚拟字符串名称{get;set;}
公共虚拟字符串Url{get;set;}
公共虚拟字符串ImgPath{get;set;}
公共虚拟字符串ShortContent{get;set;}
公共虚拟字符串内容{get;set;}
公共虚拟布尔服务可见{get;set;}
ICollection_recalls=新列表();
公共虚拟ICollection召回
{
获取{return}
设置{u=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();
}
}
class RecCallMappingOverride:IAutoMappingOverride
{
公共无效替代(自动映射)
{
mapping.Cache.ReadWrite();
mapping.HasManyToMany(q=>q.Services).Table(MappingNames.recall\u关系)
.ParentKeyColumn(映射名称.RECALL\u ID)
.ChildKeyColumn(MappingNames.SERVICE_ID).Inverse().Cascade.All();
}
}
公共类ServiceMappingOverride:IAutoMappingOverride
{
公共无效替代(自动映射)
{
mapping.Cache.ReadWrite();
mapping.HasManyToMany(q=>q.RECALL).Table(MappingNames.RECALL\u RELATIONS).ParentKeyColumn(MappingNames.SERVICE\u ID).ChildKeyColumn(MappingNames.RECALL\u ID)
.Inverse().Cascade.All();
}
}
我试图改变瀑布,但这没有帮助。我也对其他实体做了同样的操作,它可以正常工作。它是什么类型的魔法?如何定义“正确”,您希望实现什么?
我从未听说过任何关于多对多关系的干净解决方案,不使用透视表
[快速浏览映射]:只有一个“manytomy”应该是反向的
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();
}
}