Fluent nHibernate自动映射-自动映射覆盖问题

Fluent nHibernate自动映射-自动映射覆盖问题,nhibernate,fluent-nhibernate,automapping,Nhibernate,Fluent Nhibernate,Automapping,我刚刚尝试使用Fluent自动映射启动并运行一个项目(我熟悉Fluent,但习惯于编写每个地图) 我有一个具有ParseRules属性的对象ScriptType public class ScriptType : EntityBase { public virtual string Name { get; set; } public virtual IList<ParseRule> ParseRules { get; set; } } 公共类脚本类型:EntityB

我刚刚尝试使用Fluent自动映射启动并运行一个项目(我熟悉Fluent,但习惯于编写每个地图)

我有一个具有ParseRules属性的对象ScriptType

public class ScriptType : EntityBase
{
    public virtual string Name { get; set; }
    public virtual IList<ParseRule> ParseRules { get; set; }
}
公共类脚本类型:EntityBase
{
公共虚拟字符串名称{get;set;}
公共虚拟IList解析规则{get;set;}
}
这是自动映射,因为有很多,我想引用

因此,我将自动映射覆盖添加到另一个程序集

public class ScriptTypeOverride : IAutoMappingOverride<ScriptType>
{
    public void Override(AutoMapping<ScriptType> mapping)
    {
        mapping.References(x => x.ParseRules);
    }
}
public类ScriptTypeOverride:IAutoMappingOverride
{
公共无效替代(自动映射)
{
引用(x=>x.ParseRules);
}
}
并改变了我的配置以便

return configuration
            .Mappings(m => m.AutoMappings
                               .Add(AutoMap.AssemblyOf<DatabaseInfo>()
                                        .IgnoreBase<EntityBase>()
                                        .Conventions.AddFromAssemblyOf<KeyConvention>()
                                        .UseOverridesFromAssemblyOf<ScriptTypeOverride>()));
返回配置
.Mappings(m=>m.AutoMappings
.Add(自动映射装配)
.IgnoreBase()
.Conventions.AddFromAssemblyOf()
.UseOverridesFromAssemblyOf());
但我明白了(

来自表ScriptType的关联引用了未映射的类:System.Collections.Generic.IList`1[[GIT.ScriptWizard.Entities.ParseRule…”

有人能帮忙吗

引用
用于创建多对一 两个实体之间的关系, 并应用于“多方面” 你指的是另一个人 实体,因此使用
引用
方法。
HasMany
引用
关系,并获取 应用于“一侧”

您的关系应该如何工作?对于许多
ParseRules
,它看起来像一个经典的
ScriptType
,因此这应该是
ScriptType
方面有许多
,就像Fluent一样

也许,如果您想在这里建立双向关系,其中
ParseRule
的一方是关系的“拥有”方,那么您应该在
ScriptType.ParseRules
映射覆盖中使用
Inverse()

引用
用于创建多对一 两个实体之间的关系, 并应用于“多方面” 你指的是另一个人 实体,因此使用
引用
方法。
HasMany
引用
关系,并获取 应用于“一侧”

您的关系应该如何工作?对于许多
ParseRules
,它看起来像一个经典的
ScriptType
,因此这应该是
ScriptType
方面有许多
,就像Fluent一样


也许,如果您想在这里建立双向关系,其中
ParseRule
的一方是关系的“拥有”方,那么您应该使用
Inverse()
ScriptType.ParseRules
映射覆盖中。

如果你有一个ParseRules列表,你就不能使用引用。引用用于单个对象引用,而不是集合。像IList这样的集合需要HasMany。谢谢Carl,你说得对-我误解了引用的用途。如果你有一个ParseRules列表,你就不能使用它引用。引用用于单个对象引用,而不是集合。像IList这样的集合需要一个HasMany。谢谢Carl,你是对的-我误解了引用的用途。我已经意识到引用在做其他事情!我添加了一个HasManyToMany覆盖,一切都很好,谢谢我已经意识到了至少我在做其他事情!我添加了一个HasManyToMany覆盖,一切都很好,谢谢