我有一个包含下表的数据库:
- 角色:[身份证、姓名……]
- 权限:[身份证、姓名……]
- 元数据定义:[ID、名称、...]
- RolePermissions:[Id、RoleId、PermissionId、MetaDataDefinitionId]
POCO 类是:
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; }
}
流畅的映射:
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" ) ;
[...]
}
}
但在 POCO 类(class)中我需要这个:
public virtual IDictionary<Role, IList<MetaData>> RolesMetaData { get; set; }
这样的字典应该如何在映射中表示?
最佳答案
不支持直接映射列表字典。
关于c# - 流利的 NHibernate : mapping a dictionary of lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844388/