我刚尝试使用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 ...
有人可以帮忙吗?
答案 0 :(得分:4)
References
用于创建多对一 两个实体之间的关系, 并应用于“多方”。 你引用了另外一个 实体,所以你使用References
方法。HasMany
是...的“另一面”References
关系,得到 适用于“一方”。
您的关系应如何运作?它看起来像是经典的ScriptType
- 对多ParseRules
,所以这应该是HasMany
的{{1}},就像Fluent一样。
也许,如果你想在这里有双向关系,ScriptType
的一方是关系的“拥有”方面,你应该在ParseRule
映射覆盖中使用Inverse()
。