在Fluent NHibernate中映射此设计

在Fluent NHibernate中映射此设计,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正试图找出实现NHibernate持久化设计的最佳方法。以下是理想情况下的数据: Person =============== Id (int) Name (nvarchar) Privileges ============== Person_Id Right (int) AccessLevel (int) 理想情况下,我可以创建这样的类(假设我有所有的NHibernate虚拟修饰符): 公共枚举权限 { Read=0, Save=1, 删除=2 } 公共枚举访问级别 { 一级=0, 二

我正试图找出实现NHibernate持久化设计的最佳方法。以下是理想情况下的数据:

Person
===============
Id (int)
Name (nvarchar)


Privileges
==============
Person_Id
Right (int)
AccessLevel (int)
理想情况下,我可以创建这样的类(假设我有所有的NHibernate虚拟修饰符):

公共枚举权限
{
Read=0,
Save=1,
删除=2
}
公共枚举访问级别
{
一级=0,
二级=1,
三级=2
}
公共阶层人士
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字典权限{get;set;}
}
最初我考虑了,但我不想让
权限
枚举成为一个类,因为我希望能够测试它,而不必跟踪给定权限的Id。我认为一对枚举将是最简单的


不管怎样,我一直在琢磨如何在NHibernate中做到这一点,更不用说流利的NHibernate了。我希望NH的一些专家能帮上忙。

我不确定这是否可能。。。但是试着这样做(我没有测试):

HasMany(x=>x.Privileges)
.WithTableName(“特权”)
.KeyColumnNames.Add(“个人Id”)
.Cascade.All()
.AsMap(
index=>index.WithColumn(“Right”).WithType(),

element=>element.WithColumn(“AccessLevel”)。WithType

我将对此进行一次拍摄并报告。
public enum Rights
{
    Read = 0,
    Save = 1,
    Delete = 2
}

public enum AccessLevels
{
    LevelOne = 0,
    LevelTwo = 1,
    LevelThree = 2
}

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Dictionary<Rights, AccessLevels> Privileges { get; set; }
}
 HasMany(x => x.Privileges)
            .WithTableName("Privileges")
            .KeyColumnNames.Add("Person_Id")
            .Cascade.All()
            .AsMap<string>(
                index => index.WithColumn("Right").WithType<Rights>(),
                element => element.WithColumn("AccessLevel").WithType<AccessLevels>()
            );
    }
References(x => x.Privileges).AsMap<Rights>("Right").Element("AccessLevel", c => c.Type<AccessLevels>());.