NHibernate未公开集合集合集合映射中的列

NHibernate未公开集合集合集合映射中的列,nhibernate,Nhibernate,我们正在编写代码,用枚举映射中的所有有效值生成检查约束。我们的一些枚举位于通过映射集集合的复合元素内部(请参见下文): 当枚举简单地映射为属性或内部组件时,我们可以使用反射成功地获得特定枚举的所有有效值。我们通过获取NHibernate.Mapping.Table并遍历列以查找枚举类型来实现这一点。我们的问题是集合类型。集合类型的ColumnsIterator计数始终为零 是否有人成功地从代码中的映射集(碰巧是值对象,如果这很重要的话)获取了列信息 不确定我们想做什么。让我知道是否需要更多的

我们正在编写代码,用枚举映射中的所有有效值生成检查约束。我们的一些枚举位于通过映射集集合的复合元素内部(请参见下文):


当枚举简单地映射为属性或内部组件时,我们可以使用反射成功地获得特定枚举的所有有效值。我们通过获取NHibernate.Mapping.Table并遍历列以查找枚举类型来实现这一点。我们的问题是集合类型。集合类型的ColumnsIterator计数始终为零

是否有人成功地从代码中的映射集(碰巧是值对象,如果这很重要的话)获取了列信息


不确定我们想做什么。让我知道是否需要更多的信息来更好地理解这个问题。

[最初由OP回答]:事实证明我们在错误的地方寻找解决方案。最初我们只使用Configuration.ClassMappings和Configuration.CollectionMappings,正如我最初的评论所指出的,CollectionMappings中没有公开列


当我们处理每个类映射的PropertyIterator并根据属性是集合还是组件获取不同的枚举信息时,我们发现了成功(以及我们想要的枚举),因为有几种方法可以使用组件映射事物,这是迄今为止最棘手的部分。我想在博客上更详细地介绍我们的解决方案。如果发生这种情况,我会尝试发布一个链接。

那么,你回答了你的问题吗?您应该将解决方案作为答案发布。@Jondams:我已将更新从问题转移到社区wiki答案。。。
<set name="Addresses" table="[Addresses$]" access="field.camelcase-underscore">
    <key column="Person" />
    <composite-element class="Address">
        <property name="StreetAddress1" column="[Street Address 1]" />
        <property name="Country" type="Import.DataAccess.Mappings.UserTypes.EnumerationDisplayNameType`1[[Core.Domain.Model.Enumerations.Country, Core]], Import" />
        <property name="State"  type="Import.DataAccess.Mappings.UserTypes.EnumerationDisplayNameType`1[[Core.Domain.Model.Enumerations.State, Core]], Import" />
        <property name="ZipCode" column="[Zip Code]" length="10" />
    </composite-element>
</set>