Fluent nHibernate自动映射-自动映射覆盖问题
我刚刚尝试使用Fluent自动映射启动并运行一个项目(我熟悉Fluent,但习惯于编写每个地图) 我有一个具有ParseRules属性的对象ScriptTypeFluent 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
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覆盖,一切都很好,谢谢