nhibernate fluent-nhibernate nhibernate-mapping

Pregunta fluida de NHibernate



fluent nhibernate mapping (4)

Creo que sería

public User() { Id(x => x.UserID); HasMany<UserRoles>(x => x.UserRoles).AsBag(); }

También tendrás que asegurarte de asignar tu clase UserRoles también

Supongamos que tiene dos tablas, "Usuarios" y "UserRoles". Así es como están estructuradas las dos tablas (tabla - columnas):

Usuarios - ID de usuario (int)

UserRoles - UserID (int), Rol (cadena)

Lo que quiero es que mi clase de "Usuario" en mi dominio tenga un IList de roles. ¿Cómo construyo mi mapeo Fluent NHibernate para lograr esto?


Lo que estás buscando es un conjunto de elementos, que en el mapeo estándar de hbm es:

<set name="Roles" table="UserRoles"> <key column="UserID" /> <element column="Role" /> </set>

Para Fluent NHibernate puedes mapear esto así:

HasMany<string>(x => x.Roles) .AsElement("Role");

Es posible que también deba especificar el nombre de la clave con WithKeyColumn(string) .


Esto también funcionó:

HasMany<Role>(u => u.Roles) .WithTableName("UserRoles") .Component(role => role.Map(r => r.Name)) .AsList();

No necesita asignar Roles ni UserRoles.

Asegúrese de que Role implemente IEquatable < Role > ;.


FWIW esto ha cambiado menos de hoy en día. El mapeo actual es

HasMany<string>(x => x.Roles) .Element("Role");