流畅的nHibernate自动映射 - AutoMapping Override问题

时间:2011-06-20 14:24:19

标签: nhibernate fluent-nhibernate automapping

我刚尝试使用Fluent Automapping启动并运行一个项目(我熟悉Fluent但是用来编写每个地图)

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

public class ScriptType : EntityBase
{
    public virtual string Name { get; set; }
    public virtual IList<ParseRule> ParseRules { get; set; }
}

这是自动映射为HasMany,我想要参考。

因此我将AutoMapping覆盖添加到另一个程序集......

public class ScriptTypeOverride : IAutoMappingOverride<ScriptType>
{
    public void Override(AutoMapping<ScriptType> mapping)
    {
        mapping.References(x => x.ParseRules);
    }
}

并改变了我的配置......

return configuration
            .Mappings(m => m.AutoMappings
                               .Add(AutoMap.AssemblyOf<DatabaseInfo>()
                                        .IgnoreBase<EntityBase>()
                                        .Conventions.AddFromAssemblyOf<KeyConvention>()
                                        .UseOverridesFromAssemblyOf<ScriptTypeOverride>()));

但我明白了...... :(

表ScriptType中的关联引用了一个未映射的类:System.Collections.Generic.IList`1 [[GIT.ScriptWizard.Entities.ParseRule ...

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

  

References用于创建多对一   两个实体之间的关系,   并应用于“多方”。   你引用了另外一个   实体,所以你使用References   方法。 HasMany是...的“另一面”   References关系,得到   适用于“一方”。

来自Fluent's website

您的关系应如何运作?它看起来像是经典的ScriptType - 对多ParseRules,所以这应该是HasMany的{​​{1}},就像Fluent一样。

也许,如果你想在这里有双向关系,ScriptType的一方是关系的“拥有”方面,你应该在ParseRule映射覆盖中使用Inverse()

相关问题