J'essaie de tirer parti de NH pour mapper à un modèle de données qui est une interprétation approximative du modèle de données EAV/CR. J'ai la plupart de travail mais j'ai du mal à mapper la collection Entity.Attributes.Utilisation de NHibernate avec un modèle de données EAV
Voici les tableaux en question:
--------------------
| Entities |
--------------------
| EntityId PK |-|
| EntityType | |
-------------------- |
-------------
|
V
--------------------
| EntityAttributes | ------------------ ---------------------------
-------------------- | Attributes | | StringAttributes |
| EntityId PK,FK | ------------------ ---------------------------
| AttributeId FK | -> | AttributeId PK | -> | StringAttributeId PK,FK |
| AttributeValue | | AttributeType | | AttributeName |
-------------------- ------------------ ---------------------------
La colonne AttributeValue est mis en œuvre en tant que colonne sql_variant et je l'ai mis en œuvre un NHibernate.UserTypes.IUserType pour elle.
Je peux créer une entité EntityAttribute et la conserver directement afin qu'une partie de la hiérarchie fonctionne.
Je ne suis pas sûr comment mapper la collection EntityAttributes à l'entité Entity.
Notez le tableau EntityAttributes pourrait (et fait) contient plusieurs lignes pour une combinaison entityID donnée/de AttributeId:
EntityId AttributeId AttributeValue
-------- ----------- --------------
1 1 Blue
1 1 Green
StringAttributes ligne ressemble à ceci pour cet exemple:
StringAttributeId AttributeName
----------------- --------------
1 FavoriteColor
Comment puis-je mapper efficacement ce modèle de données à mon domaine Entity de sorte que Entity.Attributes ("FavoriteColors") renvoie une collection de couleurs préférées? Tapé comme System.String?
Vous utilisez couramment? –
Si vous envisagez de trouver des entités par valeurs d'attribut, je ne suis pas sûr que sql_variant fonctionne correctement. Tu devrais essayer ça. –