Используя NHibernate с моделью данных EAV

Я пытаюсь усилить 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") возвращают набор любимых цветов? Введенный как Система. Строка?

15
задан devonlazarus 6 May 2010 в 21:14
поделиться