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

}

为了定义这种关系,我已经实现了 IHasManyConventionIHasManyConventionAcceptance,如下所示:

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-manyelement 元素添加到包中。 显然我做错了什么,但我找不到任何使用 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();
        }
    }