5
Tengo una base de datos con las siguientes tablas:Fluido NHibernate: relacionar un diccionario de listas
- Roles: [ID, Nombre, ...]
- Permisos: [ID, Nombre, ... ]
- MetaDataDefinitions: [ID, Nombre, ...]
- RolePermissions: [ID, RoleId, PermissionId, MetaDataDefinitionId] clases
POCO son:
class Role {
public Role() {
MetaDataPermissions = new Dictionary<MetaDataDefinition, Permission>() ;
}
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<MetaDataDefinition, Permission> MetaDataPermissions { get; set; }
}
class Permission {
public Permission() {
MetaDataRoles = new Dictionary<MetaDataDefinition, Role>() ;
}
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<Role, MetaData> RolesMetaData { get; set; }
}
class MetaData {
public MetaData() {
RolePermissions = new Dictionary<Role, Permission>() ;
}
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<Role, Permission> RolePermissions { get; set; }
}
asignaciones Fluido:
class RoleMap : ClassMap<Role> {
public RoleMap() {
[...]
HasManyToMany(x => x.MetaDataPermissions)
.Table("RolePermissions")
.AsEntityMap("MetaDataDefinitionId", "PermissionId")
.KeyColumn("RoleId") ;
[...]
}
}
class PermissionMap : ClassMap<Permission> {
public PermissionMap() {
[...]
HasManyToMany(x => x.RolesMetaData)
.Table("RolePermissions")
.AsEntityMap("RoleId", "MetaDataDefinitionId")
.KeyColumn("PermissionId") ;
[...]
}
}
class MetaDataMap : ClassMap<MetaData> {
public MetaDataMap() {
[...]
HasManyToMany(x => x.RolePermissions)
.Table("RolePermissions")
.AsEntityMap("RoleId", "PermissionId")
.KeyColumn("MetaDataDefinitionId") ;
[...]
}
}
Pero en las clases POCO necesito este:
public virtual IDictionary<Role, IList<MetaData>> RolesMetaData { get; set; }
Como tales diccionarios deben estar representados en el mapeo?