c# - 流利的 NHibernate : mapping a dictionary of lists

标签 c# .net asp.net-mvc nhibernate fluent-nhibernate

我有一个包含下表的数据库:

  • 角色:[身份证、姓名……]
  • 权限:[身份证、姓名……]
  • 元数据定义:[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/

相关文章:

c# - 文件被复制然后提示它不存在

c# - EF4.1 + MARS - 更新时不允许新事务

asp.net - 获取 ASP.NET Core 2.0 中具有特定角色的所有用户

javascript - 如何通过表单上传文件后清除输入字段

asp.net-mvc - 获取 MVC3 中选中复选框的 ID

c# - 内存不足异常 - 使用 SqlDataReader 和 OpenXML

c# - 如何将 local.settings.json 从 azure 函数移植到 .NET 核心 Web 项目?

c# - 如何通过 UnhandledException 卸载 AppDomain

c# - foreach文件夹中的文件,重命名并保存

C#.NET : How do I create a new instance of a class based solely on a "Type" object?