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