FluentNHibernate - 使用自动映射将包定义为元素

时间:2015-01-20 11:27:01

标签: c# fluent-nhibernate

我有一个枚举类型为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);
        }

当我尝试使用此约定构建Configuration对象时,我得到如下例外:

  

命名空间'urn:nhibernate-mapping-2.2'中的元素'bag'具有   命名空间中的无效子元素“一对多”   '瓮:NHibernate的映射-2.2'

我怀疑FluentNhibernate正在将one-to-manyelement元素添加到包中。 显然我做错了,但我找不到任何使用automapping来做这个伎俩的例子。

请告诉我如何使用Element将行李定义为FluentNhibernate Automapping

1 个答案:

答案 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();
        }
    }