one many classmapping nhibernate nhibernate-mapping

many - nhibernate mapeo muchos a muchos-columna adicional en la tabla de mapeo?



nhibernate sessionfactory connection string (2)

Tengo las siguientes definiciones de mapeo:

<class name="Role" table="Role" optimistic-lock="version" > <id name="Id" type="Int32" unsaved-value="0" > <generator class="native" /> </id> <property name="RoleName" type="String(40)" not-null="true" /> <bag name="UsersInRole" generic="true" lazy="true" cascade="all" table="UserRoles" > <key column="RoleId" /> <many-to-many column="UserId" class="SystemUser, Domain"/> </bag>

y

<id name="Id" type="Int32" unsaved-value="0" > <generator class="native" /> </id> <property name="UserName" type="String(40)" not-null="true" unique="true" />

Esta asignación genera la tabla de asignación UserRoles, que tiene dos columnas: RoleId y UserId.

Sin embargo, me gustaría agregar atributos adicionales a esa relación, es decir, algunos valores enum que definen el estado de la relación, así como las fechas efectivas de inicio y finalización.

¿Es posible hacerlo en nhibernate o necesito agregar una clase adicional aquí y cambiar la relación m-to-m en 2 relaciones [usuario] 1-a-m [user_role] m-to-1 [role]?


Agregar clase adicional.


Necesita agregar una clase adicional, por ejemplo, UserRole, en el código para mantener las propiedades adicionales.

Cuando se trata de mapear esto se puede mapear como una clase como mencionaste. Pero también creo que se puede mapear como un elemento compuesto en el mapeo Rol:

<set name="UsersInRole" lazy="true" table="UserRoles" > <key column="RoleId" /> <composite-element class="UserRole"> <many-to-one name="User" column="UserId" not-null="true"/> <propery name="RelationState" not-null="true"/> <propery name="StartDate" not-null="true"/> <propery name="EndDate" not-null="true"/> </composite-element> </set>

Todas las propiedades deben ser no nulas, ya que se convierten en parte de las claves principales de la tabla UserRoles. Para más información, ver: