Jusqu'à présent, l'association fonctionne très bien (la classe User
charge la UserRoles
instance appropriée lorsqu'il est présent), mais lors de la création d'une nouvelle User
et sa propriété Roles
à une nouvelle instance de UserRoles
, l'objet UserRoles
est pas enregistré.Comment mapper une association un-à-un avec NHibernate en utilisant un générateur de clé étrangère?
Voici mon User.hbm.xml abrégée:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="DistrictObservations.User, DistrictObservations" table="users">
<cache usage="read-write" region="all" />
<id name="ID" column="id" type="int" unsaved-value="0">
<generator class="identity" />
</id>
<!-- snip -->
<one-to-one name="Roles" class="DistrictObservations.UserRoles, DistrictObservations" lazy="false" />
</class>
</hibernate-mapping>
Et voici la mise en correspondance des UserRoles:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="DistrictObservations.UserRoles, DistrictObservations" table="user_roles">
<cache usage="read-write" region="all" />
<id name="UserID" column="user_id" type="int" >
<generator class="foreign">
<param name="property">User</param>
</generator>
</id>
<!-- snip -->
<one-to-one name="User" class="DistrictObservations.User, DistrictObservations" lazy="false" constrained="true" foreign-key="FK_user_roles_users" />
</class>
</hibernate-mapping>
Quelqu'un at-il une idée comment avoir le UserRoles objet enregistré avec l'utilisateur. ID comme clé primaire? J'ai regardé la documentation, et pour être honnête, ce n'est pas particulièrement utile.
je peux changer le schéma ... J'utilise le générateur étranger, mais ce n'est pas t travail lorsque je fais un sess.Save (utilisateur) – wprl