У меня есть база данных, содержащая таблицу, которая выглядит примерно так:
PropertyId, EntityId, значение
PropertyId и EntityId - это комбинированный первичный ключ. Каждая сущность распределена по паре строк, где каждая строка содержит одно свойство сущности. У меня нет контроля над этой базой данных, поэтому мне придется с ней работать.
Можно ли использовать NHibernate для сопоставления сущностей из этой таблицы с отдельными объектами? Мне нужно только читать из этой таблицы, это может немного упростить задачу. Или мне лучше просто использовать DataReaders и самому делать сопоставление?





Не совсем так, но вы можете использовать собственный SQL-запрос для определения ваших сущностей (отдельный entityid, плюс любые атрибуты уровня сущности), см. здесь.
Хотя я вижу, что вам может понадобиться сопоставление свойств / значений с атрибутами объекта сущности. Это может означать дальнейшие запросы для их заполнения вручную - что может означать, что ваш маршрут чтения данных является лучшим.
Если вы счастливы, что они представляют собой совокупность сущностей, тогда это не должно быть проблемой.
Я не могу вспомнить точный синтаксис, но map сделает это:
<map name='Values' table='EntityPropertyValue'>
<key column='EntityId' />
<index-many-to-many class='Person' column='PersonId' />
<element column='Value' type='object' />
</map>
Спасибо. Я попробую. Я могу сохранить свойства в списке и сделать их доступными для внешнего мира с помощью отдельных методов получения свойств, которые ищут нужное свойство в списке. Не идеально, но работоспособно :-)