2012-03-23 11 views
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?

Respuesta

1

No se admite la asignación directa de un diccionario de listas.

Cuestiones relacionadas