FluentNHibernate e Enums

Eu tenho uma enumeração chamada Permissões. Um usuário pode receber permissões, ou as permissões podem ser atribuídas a uma função e o usuário pode receber uma funçã

User e Role têm uma propriedade como esta:

public virtual IList<Permission> Permissions { get; set; }

Eu quero usar uma enumeração para Permissões, para que no meu código eu possa fazer coisas como

public static bool UserHasPermission(Permission.DeleteUser)

gora, eu tenho cerca de 50 permissões diferentes na minha enumeração. Seria bom se eu não precisasse preencher um conjunto de dados espelho no banco de dados. Meu enum fica assim:

public enum Permission
    {
        //site permissions 1-99
        [StringValue("View Users")]
        ViewUser = 1,

        [StringValue("Add User")]
        AddUser = 2,

        [StringValue("Edit User")]
        EditUser = 3,

        [StringValue("Delete User")]
        DeleteUser = 4

        ...

}

tualmente, tenho uma tabela para Permissões que é o PermissionId (int) e PermissionName (varchar (50)

Aqui estão minhas tabelas no lado dos papéis. O lado do usuário é exatamente o mesmo no que diz respeito às permissões:

CREATE TABLE dbo.Roles
(
    RoleId                      int                 IDENTITY(2,1) NOT NULL,
    RoleName                    varchar (50)        NOT NULL,

    CONSTRAINT PK_Roles PRIMARY KEY CLUSTERED (RoleId)
)

CREATE TABLE dbo.RolePermissions
(
    RolePermissionId            int                 IDENTITY(1,1) NOT NULL,
    RoleId                      int                 NOT NULL,
    PermissionId                int                 NOT NULL,

    CONSTRAINT PK_RolePermissions PRIMARY KEY CLUSTERED (RolePermissionId),
    CONSTRAINT FK_RolePermissions_Roles FOREIGN KEY (RoleId) REFERENCES Roles(RoleId),
    CONSTRAINT U_RolePermissions UNIQUE(RoleId, PermissionId)
)

Então, eu tenho uma permissão tble no caso de precisar, mas simplesmente não consigo mapear o campo id em RolePermissions ou a tabela Permissions de volta para a enumeraçã

CREATE TABLE dbo.Permissions
(
    PermissionId                    int                 NOT NULL,
    PermissionName                  varchar (50)        NOT NULL,

    CONSTRAINT PK_Permissions PRIMARY KEY CLUSTERED (PermissionId)
)
Posso mapear a enumeração para a tabela?Deve mesmo mapeá-lo ou devo apenas remover a tabela Permissões e, em UserPermissions e RolePermissions, deixar PermissionId apenas um int e mapeá-lo para a enumeração?Se eu mantiver a tabela Permissões, existe uma maneira de o nhibernate preencher automaticamente os dados na tabela Permissões a partir dos dados na enumeração?

gora, não tenho mapeamento para o enum de permissão, além de algo como isto:

HasManyToMany(x => x.Permissions)
                 .WithParentKeyColumn("RoleId")
                 .WithChildKeyColumn("PermissionId")
                 .WithTableName("RolePermissions")
                 .LazyLoad()
                 .Cascade.All();

Infelizmente, isso causa um erro:

Uma associação da tabela RolePermissions refere-se a uma classe não mapeada: GotRoleplay.Core.Domain.Model.Permission

O que estou fazendo de errado com enums? Existe uma maneira padrão ou uma prática recomendada para usá-los com fluentnhibernate quando o enum for uma lista de valores no objeto e não apenas um valor únic

questionAnswers(4)

yourAnswerToTheQuestion