我有一个枚举类型为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);
}
当我尝试使用此约定构建Configuration对象时,我得到如下例外:
命名空间'urn:nhibernate-mapping-2.2'中的元素'bag'具有 命名空间中的无效子元素“一对多” '瓮:NHibernate的映射-2.2'
我怀疑FluentNhibernate
正在将one-to-many
和element
元素添加到包中。
显然我做错了,但我找不到任何使用automapping
来做这个伎俩的例子。
请告诉我如何使用Element
将行李定义为FluentNhibernate Automapping
?
答案 0 :(得分:1)
好吧我明白了:)
您应该使用IAutomappingOverride
实施将广告订单定义为element
而不是one-to-many
。以下是我的表现方式:
public class EntityOverride:IAutoMappingOverride<Entity>
{
public void Override(AutoMapping<RealEstateFile> mapping)
{
mapping.HasMany(x => x.Usage).Element("Usages").AsBag();
}
}