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?