FluentNHibernate-使用自动映射将包定义为元素
FluentNHibernate-Defining a bag as an Element using Automapping
我有一个 class,它有一个枚举类型的 IList
。像这样:
public class Enitity
{
public IList<Usages> Usages{get;set;} //Usages is an enum type
}
为了定义这种关系,我已经实现了 IHasManyConvention
和 IHasManyConventionAcceptance
,如下所示:
public class HasManyEnumTypeConvention:IHasManyConvention,IHasManyConventionAcceptance
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Element.Type(instance.ChildType);
}
}
public void Accept(IAcceptanceCriteria<IOneToManyCollectionInspector> criteria)
{
criteria.Expect(instance => instance.ChildType != null && instance.ChildType.IsEnum);
}
当我尝试使用此约定构建配置对象时,出现如下异常:
The element 'bag' in namespace 'urn:nhibernate-mapping-2.2' has
invalid child element 'one-to-many' in namespace
'urn:nhibernate-mapping-2.2'
我怀疑 FluentNhibernate
正在将 one-to-many
和 element
元素添加到包中。
显然我做错了什么,但我找不到任何使用 automapping
来解决问题的例子。
请告诉我如何使用 FluentNhibernate Automapping
将包定义为 Element
?
好的,我明白了:)
您应该使用 IAutomappingOverride
实现将包定义为 element
而不是 one-to-many
。这是我的做法:
public class EntityOverride:IAutoMappingOverride<Entity>
{
public void Override(AutoMapping<RealEstateFile> mapping)
{
mapping.HasMany(x => x.Usage).Element("Usages").AsBag();
}
}
我有一个 class,它有一个枚举类型的 IList
。像这样:
public class Enitity
{
public IList<Usages> Usages{get;set;} //Usages is an enum type
}
为了定义这种关系,我已经实现了 IHasManyConvention
和 IHasManyConventionAcceptance
,如下所示:
public class HasManyEnumTypeConvention:IHasManyConvention,IHasManyConventionAcceptance
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Element.Type(instance.ChildType);
}
}
public void Accept(IAcceptanceCriteria<IOneToManyCollectionInspector> criteria)
{
criteria.Expect(instance => instance.ChildType != null && instance.ChildType.IsEnum);
}
当我尝试使用此约定构建配置对象时,出现如下异常:
The element 'bag' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'one-to-many' in namespace 'urn:nhibernate-mapping-2.2'
我怀疑 FluentNhibernate
正在将 one-to-many
和 element
元素添加到包中。
显然我做错了什么,但我找不到任何使用 automapping
来解决问题的例子。
请告诉我如何使用 FluentNhibernate Automapping
将包定义为 Element
?
好的,我明白了:)
您应该使用 IAutomappingOverride
实现将包定义为 element
而不是 one-to-many
。这是我的做法:
public class EntityOverride:IAutoMappingOverride<Entity>
{
public void Override(AutoMapping<RealEstateFile> mapping)
{
mapping.HasMany(x => x.Usage).Element("Usages").AsBag();
}
}