Ich versuche NH zu nutzen, um ein Datenmodell zu erstellen, das eine lose Interpretation des EAV/CR-Datenmodells ist.Verwenden von NHibernate mit einem EAV-Datenmodell
Ich habe das meiste davon zu arbeiten, aber ich kämpfe mit der Zuordnung der Entity.Attributes Sammlung.
Hier sind die Tabellen in Frage:
--------------------
| Entities |
--------------------
| EntityId PK |-|
| EntityType | |
-------------------- |
-------------
|
V
--------------------
| EntityAttributes | ------------------ ---------------------------
-------------------- | Attributes | | StringAttributes |
| EntityId PK,FK | ------------------ ---------------------------
| AttributeId FK | -> | AttributeId PK | -> | StringAttributeId PK,FK |
| AttributeValue | | AttributeType | | AttributeName |
-------------------- ------------------ ---------------------------
Die Attribute Spalte als sql_variant Spalte implementiert ist, und ich habe eine NHibernate.UserTypes.IUserType für sie umgesetzt.
Ich kann eine EntityAttribute-Entität erstellen und diese direkt beibehalten, sodass ein Teil der Hierarchie funktioniert.
Ich bin mir nicht sicher, wie die EntityAttributes-Auflistung der Entity-Entität zugeordnet wird.
Notiere die EntityAttributes Tabelle konnte (und tut) mehrere Zeilen für eine bestimmte EntityID/AttributeId Kombination enthalten:
EntityId AttributeId AttributeValue
-------- ----------- --------------
1 1 Blue
1 1 Green
StringAttributes Zeile für dieses Beispiel wie folgt aussieht:
StringAttributeId AttributeName
----------------- --------------
1 FavoriteColor
Wie kann ich dieses Datenmodell effektiv meiner Entitätsdomäne zuordnen, sodass Entity.Attributes ("FavoriteColors") eine Sammlung von Lieblingsfarben zurückgibt? Als System.String eingegeben?
Sind Sie fließend mit? –
Wenn Sie Entitäten nach Attributwerten suchen, bin ich mir nicht sicher, ob sql_variant ordnungsgemäß funktioniert. Du solltest das versuchen. –