2012-03-23 20 views
5

Mam DB z poniższych tabelach:Fluent NHibernate: odwzorowywanie słownika list

  • funkcje: [id, nazwisko, ...]
  • Uprawnienia: [id, nazwisko, ... ]
  • MetaDataDefinitions: [id, nazwisko, ...]
  • RolePermissions: [id, RoleId, PermissionId, MetaDataDefinitionId] klasy

poco są:

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 mapowania:

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

Ale w klasach poco mi to potrzebne:

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

Jak takie słowniki powinny być reprezentowane w mapowaniu?

Odpowiedz

1

Bezpośrednie odwzorowywanie słownika list nie jest obsługiwane.