Hola buenas tardes:
Estoy empezando a usar Nhibernate, y tengo un problema.
Tengo usuarios que pueden tener uno o mas roles, para solucionarlo a nivel base de datos agregue una tercera tabla UsuarioRol, teniendo 3 tablas (Usuarios, UsuarioRol y CatUsuarioRol), de manera que quiero relaccionar de muchos a muchos las tablas Usuario - CatUsuariol
La Tabla Usuarios_rols, solo tendria los campos (usuario-id y rol_id)
Usuarios_rols
usuario_id(pk)
rol_id(pk)
Usuarios
usuario_id(pk)
otros campos
Cat_Usuario_rol
rol_id(pk)
otros campos
Este es mi usuario.hbm.xml
<?xml version="1.0"?>
<hibernate-mapping assembly="castor" namespace="castor.core" xmlns="urn:nhibernate-mapping-2.2">
<class name="Usuario" table="usuario" lazy="false" >
<id name="UsuarioId">
<column name="usuario_id" sql-type="integer" not-null="true" />
<generator class="identity">
<param name="sequence">usuario_usuario_id_seq</param>
</generator>
</id>
<bag name="CatUsuarioRols" table="usuario_rol" lazy="false" inverse="true" >
<key column="usuario_id" />
<many-to-many class="CatUsuarioRol" column="rol_id" />
</bag>
<property name="Username">
<column name="username" sql-type="character varying" not-null="true" />
</property>
(...) Otros atributos
</class>
</hibernate-mapping>
En mi CatUsuarioRol.hbm.xml
Solo tengo el id, y los property de la tabla, ya que lei que al tener activada laa propiedad inverse="true" en la relaccion many to many no es necesaria colocarla en el otro mapping
Si hago una consulta a la base de datos puedo ver que esta la relacción y muestra los usuarios con sus respectivos roles, que agregue manualmente en la base de datos
No existe el UsuarioRol.hbm.xml ni la entidad UsuarioRol, ¿Debo de generarlos?
Cuando agrego un usuario, el codigo que utilizo es el siguiente
Usuario nueva = new Usuario()
{
Username = Request.Form["username"],
Activo = true,
FechaMod = DateTime.Now,
(...) Otros atributos
};
Mi pregunta como puedo hacer para que se guarden los roles.
Saludos!