Je les tableaux ci-dessous:Nhibernate, collections et compositeid
Bucket(
bucketId smallint (PK)
name varchar(50)
)
BucketUser(
UserId varchar(10) (PK)
bucketId smallint (PK)
)
La clé composite est pas le problème des thats ok je sais comment contourner cela, mais je veux que ma classe seau pour contanin un IList de BucketUser. J'ai lu la référence en ligne et j'ai pensé que je l'avais craqué mais je n'ai pas eu. Les deux applications sont ci-dessous
- Godet -
<class name="Bucket,Impact.Dice.Core" table="Bucket">
<id name="BucketId" column="BucketId" type="Int16" unsaved-value="0">
<generator class="native"/>
</id>
<property column="BucketName" type="String" name="BucketName"/>
<bag name="Users" table="BucketUser" inverse="true" generic="true" lazy="true">
<key>
<column name="BucketId" sql-type="smallint"/>
<column name="UserId" sql-type="varchar"/>
</key>
<one-to-many class="Bucket,Impact.Dice.Core" not-found="ignore"/>
</bag>
</class>
- bucketUser -
<class name="BucketUser,Impact.Dice.Core" table="BucketUser">
<composite-id>
<key-many-to-one name="BucketUser" class="Bucket,Impact.Dice.Core" column="BucketId"/>
<key-property name="UserId" column="UserId" type="string"></key-property>
</composite-id>
</class>
J'ai réécrit ma réponse pour la rendre plus claire. Le mapping de votre bucketuser n'est pas visible, vous devez le faire "code". –