NHibernate не предоставляет столбцы в Set CollectionMappings

Мы находимся в процессе написания кода для генерации проверочных ограничений со всеми допустимыми значениями из наших сопоставлений перечисления. Некоторые из наших перечислений находятся внутри составных элементов через коллекции отображаемых наборов (см. Ниже):

<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 всегда равен нулю для типов коллекций.

Кому-нибудь удалось получить информацию о столбцах из сопоставленных наборов (которые оказываются объектами значений, если это вообще имеет значение) в коде?

Не уверен, что понятно, что мы пытаемся сделать. Сообщите мне, если для лучшего понимания проблемы требуется дополнительная информация.

Значит, вы ответили на свой вопрос? Вы должны опубликовать решение в качестве ответа.

Jon Adams 08.09.2011 00:51

@JonAdams: Я переместил обновление из вопроса в ответ сообщества вики ...

Lukas Eder 28.10.2012 11:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
181
1

Ответы 1

[первоначально ответил OP]: Оказывается, мы искали не в том месте. Первоначально мы использовали только Configuration.ClassMappings и Configuration.CollectionMappings, и, как указывалось в моих исходных комментариях, столбцы не отображались из CollectionMappings.

Мы добились успеха (и нужных перечислений), когда проработали каждый объект PropertyIterator ClassMapping и по-разному получали информацию о перечислении в зависимости от того, было ли свойство коллекцией или компонентом. Поскольку существует несколько способов сопоставить объекты с помощью компонентов, это было самая сложная часть. Я бы хотел подробнее рассказать о нашем решении в блоге. Я постараюсь опубликовать ссылку, если / когда это произойдет.

Другие вопросы по теме