2009-05-18 6 views
3

Ich habe eine Klasse, die etwa wie folgt aussieht:Fluent NHibernate - bind Liste <int>

public class User { 
     public virtual int ID; 
     public virtual string Name; 
     public virtual IList<int> userRights; 
} 

I want to make a UserMap : ClassMap<User> 

den Namen jedoch kein Problem Mapping ich kann nicht scheinen, um herauszufinden, wie die Benutzerrechte kartieren.

Tabelle sieht aus wie

UserTable 
User_id int 
User_Name nvarchar 
User_group int 

UserRights 
User_group int 
RightID int 

Wie würden Sie diese Karte?

+0

Eigentlich, das erste Mal, als ich antwortete, erkannte ich, dass ich es nicht genau genug gelesen hatte. Konzeptionell haben Sie auch eine sogenannte User_group. In NHibernate arbeiten die Viele-zu * typischerweise am Primärschlüssel. – Min

Antwort

2

Nun, wenn Sie eine Liste wollen, brauchen Sie einen Index. Also würde ich empfehlen, es zu einer ICollection zu machen, es sei denn, die Reihenfolge ist signifikant.

Die Abbildung sollte ungefähr so ​​aussehen:

HasMany(x=> x.userRights).Element("RightID").AsBag(); 

jedoch auf bei Tisch suchen, bemerkte ich etwas seltsam. Sie versuchen, eine Eins-zu-viele-Verbindung zu verwenden, ohne den Primärschlüssel in der User_Rights-Tabelle zu haben. Wenn Sie User_Id in UserRights hatten, sollte das obige funktionieren.

Ansonsten sieht es so aus, als gäbe es eine UserGroup, die von Ihren Klassen modelliert werden sollte.