Я ищу способ динамического сопоставления классов таблиц базы данных в моем приложении с помощью nhibernate (или, если работает какой-то другой ORM, дайте мне знать). Я довольно новичок в nhibernate, хотя в прошлом я использовал структуры сущностей.
Большая часть моего приложения будет использовать статические структуры и свободный nhibernate для их отображения.
Однако существует несколько таблиц базы данных, которые необходимо будет создать и сопоставить с объектами на каждом сайте установки. Все они будут иметь базовую структуру (идентификатор, имя и т. Д.), Однако у них будут дополнительные поля в зависимости от типа данных, которые они собирают. Из некоторого прочтения я обнаружил, что могу использовать отображение «dynamic-component» в xml для добавления полей с помощью свойства IDictionary Attributes. Это первый шаг и кажется относительно простым. Ссылка (http://ayende.com/blog/3942/nhibernate-mapping-dynamic-component)
Второй шаг - это то, где я борюсь. Мне нужно будет определить таблицы и отобразить их в зависимости от потребностей клиента. Как указано выше, каждая из таблиц будет иметь набор статических свойств и некоторые динамические. Они также должны будут ссылаться на статический класс «Location», как показано ниже
Местоположение (STATIC) (id, координаты)
----- DynamicTable1 (DYNAMIC) (идентификатор, имя, location_id, DynamicAttribute1, DynamicAttribute2 ........)
----- DynamicTable2 (DYNAMIC) (идентификатор, имя, location_id, DynamicAttributeA, DynamicAttributeB ....)
Нам нужно будет создать / отобразить столько динамических таблиц, сколько необходимо клиенту. DynamicTable1, DynamicTable2 и т. Д., Скорее всего, будут отличаться в некоторых отношениях для большинства клиентских сайтов. Есть ли способ в nhibernate добиться этого? Создание / управление таблицами в базе данных будет осуществляться в другом месте, мне просто нужен какой-то способ, чтобы отобразить это в моем ORM.
немного фона
Это приложение будет использоваться для хранения геологических данных. Поскольку геологические данные по своей сути различаются в зависимости от того, где они находятся, а геолог использует разные методы и ищет разные элементы (золото, уголь и т. Д.), Структура данных для хранения этой информации должна быть чрезвычайно гибкой.