Мы находимся в процессе написания кода для генерации проверочных ограничений со всеми допустимыми значениями из наших сопоставлений перечисления. Некоторые из наших перечислений находятся внутри составных элементов через коллекции отображаемых наборов (см. Ниже):
<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>
Мы может успешно получаем все допустимые значения для конкретного перечисления, используя отражение, когда перечисления просто отображаются как свойства или внутри компонентов. Мы делаем это, получая NHibernate.Mapping.Table и перебирая столбцы в поисках нашего типа перечисления. Наша проблема связана с типами коллекций. Счетчик ColumnsIterator всегда равен нулю для типов коллекций.
Кому-нибудь удалось получить информацию о столбцах из сопоставленных наборов (которые оказываются объектами значений, если это вообще имеет значение) в коде?
Не уверен, что понятно, что мы пытаемся сделать. Сообщите мне, если для лучшего понимания проблемы требуется дополнительная информация.
@JonAdams: Я переместил обновление из вопроса в ответ сообщества вики ...





[первоначально ответил OP]: Оказывается, мы искали не в том месте. Первоначально мы использовали только Configuration.ClassMappings и Configuration.CollectionMappings, и, как указывалось в моих исходных комментариях, столбцы не отображались из CollectionMappings.
Мы добились успеха (и нужных перечислений), когда проработали каждый объект PropertyIterator ClassMapping и по-разному получали информацию о перечислении в зависимости от того, было ли свойство коллекцией или компонентом. Поскольку существует несколько способов сопоставить объекты с помощью компонентов, это было самая сложная часть. Я бы хотел подробнее рассказать о нашем решении в блоге. Я постараюсь опубликовать ссылку, если / когда это произойдет.
Значит, вы ответили на свой вопрос? Вы должны опубликовать решение в качестве ответа.