2012-03-23 4 views
5

ich eine DB mit den folgenden Tabellen haben:Fluent NHibernate: Abbilden ein Wörterbuch von Listen

  • Rollen: [ID, Name, ...]
  • Berechtigungen: [ID, Name, ... ]
  • MetaDataDefinitions: [ID, Name, ...]
  • RolePermissions: [Id, RoleId, PermissionId, MetaDataDefinitionId]

POCO Klassen sind:

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; } 
} 

Fluent Mappings:

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") ; 
    [...] 
} 
} 

Aber in POCO Klassen ich brauche dies:

public virtual IDictionary<Role, IList<MetaData>> RolesMetaData { get; set; } 

Wie solche Wörterbücher sollten in der Abbildung dargestellt werden?

Antwort

1

Das direkte Zuordnen eines Wörterbuchs von Listen wird nicht unterstützt.