Nhibernate Can';我不知道多对多属性的另一面是什么';用户';应该是

Nhibernate Can';我不知道多对多属性的另一面是什么';用户';应该是,nhibernate,fluent-nhibernate,automapping,Nhibernate,Fluent Nhibernate,Automapping,我的域自动映射正在工作,但现在当我更新我的NHibernate堆栈时,我在会话工厂构建配置时遇到映射异常: “我想不出另一面是什么 多对多属性的“用户” 应该是。” 在多对多映射上引发异常 整个堆栈跟踪如下所示: 在 FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() 在 c:\hornget.horn\orm\fluentnhibernate\Working-2.1\src\fluentnhibernate\Cfg\Flu

我的域自动映射正在工作,但现在当我更新我的NHibernate堆栈时,我在会话工厂构建配置时遇到映射异常:

“我想不出另一面是什么 多对多属性的“用户” 应该是。”

在多对多映射上引发异常

整个堆栈跟踪如下所示:

在 FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() 在
c:\hornget.horn\orm\fluentnhibernate\Working-2.1\src\fluentnhibernate\Cfg\FluentConfiguration.cs:line 119 at
WebApplication1.NHibernateManager.SessionFactoryManager.BuildConfiguration(AutoPersistenceModel

C:\WebProgramming\Projects\WebApplication1\WebApplication1\NHibernateManager\SessionFactoryManager.cs:line 116 at
WebApplication1.NHibernateManager.SessionFactoryManager.GetSessionFactory() 在
C:\WebProgramming\Projects\WebApplication1\WebApplication1\NHibernateManager\SessionFactoryManager.cs:line 71 at
WebApplication1.NHibernateManager.SessionManager.CloseSession() 在
C:\WebProgramming\Projects\WebApplication1\WebApplication1\NHibernateManager\SessionManager.cs:line 47 at

C:\WebProgramming\Projects\WebApplication1\WebApplication1\Global.asax.cs:line
36 at
System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()

System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤、布尔值和同步完成)

问题是如何使用自动映射正确处理多对多关系。
注意:在我更新NHibernate/FluentNHibernate堆栈之前,映射正在工作

相关定义粘贴如下:

域类(在Dll 1中):

多对多公约:

public class ManyToManyConvention : IHasManyToManyConvention
{
    public void Apply(IManyToManyCollectionInstance instance)
    {
        if (instance.OtherSide == null)
        {
            instance.Table(
                string.Format(
                    "{0}To{1}",
                    Inflector.Pluralize(instance.EntityType.Name),
                    Inflector.Pluralize(instance.ChildType.Name)));
            instance.Cascade.AllDeleteOrphan();
        }
        else
        {
            instance.Inverse();
        }
    }

}
型号:

 var persistanceModel = AutoMap.AssemblyOf<DataModelPaceholder>()
        .AddEntityAssembly(typeof(Entity).Assembly)
        .Conventions.AddFromAssemblyOf<ClassConvention>()
        .UseOverridesFromAssemblyOf<DataModelPaceholder>()
        .Setup(s =>
        {
            s.SubclassStrategy = t => SubclassStrategy.JoinedSubclass;
            s.IsComponentType = type => type == typeof(MoneyComponent);
        })
        .IgnoreBase<Entity>()
        .IgnoreBase<EntityAudit>()
        //.IncludeBase<Product>()
        .Where
        (
            type => typeof(Entity).IsAssignableFrom(type) && !type.IsAbstract
        );
var persistanceModel=AutoMap.AssemblyOf()
.AddEntityAssembly(类型(实体).Assembly)
.Conventions.AddFromAssemblyOf()
.UseOverridesFromAssemblyOf()的
.设置(s=>
{
s、 Subclass Strategy=t=>Subclass Strategy.JoinedSubclass;
s、 IsComponentType=type=>type==typeof(MoneyComponent);
})
.IgnoreBase()
.IgnoreBase()
//.IncludeBase()
哪里
(
type=>typeof(Entity).IsAssignableFrom(type)&&!type.isasstract
);

是否有一个名为UsersToRoles的连接表,该表根据AutoMap默认约定具有适当的列名称?e、 g.用户id、角色id?

我的数据结构中有如下所述的id和表格:看起来我的fluent nhibernate组件有一些版本问题。。。它正在使用2.1版:(那么,这是一个id约定问题?这是一个id约定问题,但由于fluentnhibernate版本控制。我使用hornget更新了fluentnhibernate,但构建出现了一些问题……它生成的版本没有正确处理多个约定。我的结论是仔细检查hornget的输出。
public class PrimaryKeyConvention : IIdConvention
{
    public void Apply(IIdentityInstance instance)
    {
        instance.Column(instance.EntityType.Name + "Id");
        instance.GeneratedBy.HiLo("100");
        instance.Access.ReadOnlyPropertyThroughPascalCaseField(PascalCasePrefix.Underscore);

    }
}


public class ClassConvention : IClassConvention
{
    public void Apply(IClassInstance instance)
    {
        instance.Table(Inflector.Pluralize(instance.EntityType.Name));
        instance.LazyLoad();
        instance.Cache.NonStrictReadWrite();
    }
}  
public class ManyToManyConvention : IHasManyToManyConvention
{
    public void Apply(IManyToManyCollectionInstance instance)
    {
        if (instance.OtherSide == null)
        {
            instance.Table(
                string.Format(
                    "{0}To{1}",
                    Inflector.Pluralize(instance.EntityType.Name),
                    Inflector.Pluralize(instance.ChildType.Name)));
            instance.Cascade.AllDeleteOrphan();
        }
        else
        {
            instance.Inverse();
        }
    }

}
 var persistanceModel = AutoMap.AssemblyOf<DataModelPaceholder>()
        .AddEntityAssembly(typeof(Entity).Assembly)
        .Conventions.AddFromAssemblyOf<ClassConvention>()
        .UseOverridesFromAssemblyOf<DataModelPaceholder>()
        .Setup(s =>
        {
            s.SubclassStrategy = t => SubclassStrategy.JoinedSubclass;
            s.IsComponentType = type => type == typeof(MoneyComponent);
        })
        .IgnoreBase<Entity>()
        .IgnoreBase<EntityAudit>()
        //.IncludeBase<Product>()
        .Where
        (
            type => typeof(Entity).IsAssignableFrom(type) && !type.IsAbstract
        );