2012-04-12 4 views
0

ich eine Reihe von Tabellen in meiner DB haben, genanntSynthetische Klassen in NHibernate

UserMatchCriteria 
UserMatchLifestyle 
UserHobby 

nun die ersten beiden eine einzige Zeile Eintrag pro Benutzer-ID haben, aber die dritte Tabelle kann überall von 0 bis 100 Einträge enthalten abhängig von den Hobbys, die der Benutzer gewählt hat.

Ich möchte im C# -Code ein Objekt namens UserSearchDetails haben, das ein einzelnes UserMatchCriteria-Objekt, ein einzelnes UserMatchLifestyle-Objekt und eine IList-Sammlung enthält, die null oder mehr UserHobby-Objekte enthält.

Mein Problem ist, dass ich die User-Tabelle nicht binden möchte, um mit diesen bei jeder Ladung verknüpft zu werden, da dies ein großer Overhead ist, den ich fast nie mit allen Anwendungsfällen für ein Benutzerobjekt benötige. Ich möchte, dass die Suchdetails separat in ein UserSearchDetails-Objekt geladen werden, dem keine DB-Tabelle zugeordnet ist. Natürlich kann ich NHibernate verwenden, um Dinge zu tun wie

<one-to-one name=UserMatchCriteria> 
<one-to-one name=UserMatchLifestyle> 
<bag name=Hobbies........... /> 

usw., aber ohne eine Basistabelle der anfänglichen Auswahl aus auszuführen, und um mich mit dem Benutzer-ID, Ich bin nicht sicher, in welchem ​​Zusammenhang diese Einträge zu verwenden.

Muss ich eine andere Tabelle namens UserSearchDetails mit nur einem einzigen Eintrag für UserId erstellen, um sie als Basistabelle zu verwenden, die dann über den PK der UserId mit anderen Tabellen verknüpft wird?

Oder gibt es einen anderen Weg zu erreichen, was ich hier versuche?

Antwort

1

Die Referenzen und die Tasche sind standardmäßig lazy geladen. Sie könnten eine Komponente im Benutzer

<component name="UserSearchDetails"> 
    <many-to-one> 
    <many-to-one> 
    <bag> 
<component> 
zuordnen
Verwandte Themen