Я пытаюсь усилить NH для отображения на модель данных, которая является свободной интерпретацией модели данных EAV/CR.
У меня есть большая часть из него работа, но борюсь с отображением Объекта. Набор атрибутов.
Вот рассматриваемые таблицы:
--------------------
| Entities |
--------------------
| EntityId PK |-|
| EntityType | |
-------------------- |
-------------
|
V
--------------------
| EntityAttributes | ------------------ ---------------------------
-------------------- | Attributes | | StringAttributes |
| EntityId PK,FK | ------------------ ---------------------------
| AttributeId FK | -> | AttributeId PK | -> | StringAttributeId PK,FK |
| AttributeValue | | AttributeType | | AttributeName |
-------------------- ------------------ ---------------------------
Столбец AttributeValue реализован как sql_variant столбец, и я реализовал NHibernate. UserTypes. IUserType для него.
Я могу создать объект EntityAttribute и сохранить его непосредственно так, чтобы часть иерархии работала.
Я просто не уверен, как отобразить набор EntityAttributes на объект Объекта.
Обратите внимание, что таблица EntityAttributes могла (и делать), содержат несколько строк для данной комбинации EntityId/AttributeId:
EntityId AttributeId AttributeValue
-------- ----------- --------------
1 1 Blue
1 1 Green
Строка StringAttributes похожа на это для этого примера:
StringAttributeId AttributeName
----------------- --------------
1 FavoriteColor
Как я могу эффективно отобразить эту модель данных на свой домен Entity, таким образом что Объект. Атрибуты ("FavoriteColors") возвращают набор любимых цветов? Введенный как Система. Строка?