如何使用自动化在流畅的nHibernate中映射键入的字典?

时间:2011-12-06 02:24:25

标签: fluent-nhibernate

我的课程:

[PersistClass]
public class ExternalAccount
{
    public virtual AccountType AccountType { get; set; }
    public virtual int Id { get; private set; }
    public virtual User User { get; set; }
    public virtual Dictionary<string, string> Parameters { get; set; }

    public ExternalAccount()
    {
        Parameters = new Dictionary<string, string>();
    }
}

字典未被映射。我知道自动化默认情况下不会使用词典,我该如何配置映射?所有参数都是一个键/值对的列表 - 所以我希望它们存储在一个带有externalaccount表的外键的表中。我知道我可以用另一个类做到这一点 - 但它使得访问类中的参数变得更加困难 - 我宁愿一次配置复杂性。

请记住我是新的Fluent和nHibernate。

由于

1 个答案:

答案 0 :(得分:0)

使用简单的类关系,如下所示:

public class Foo {
    public virtual IDictionary<string, Bar> Bars { get; set; }
}

public class Bar {
    public virtual string Type { get; set; }
    public virtual int Value { get; set; }
}

您可以通过以下方式使用Fluent NHibernate进行映射:

mapping.HasMany(x => x.Bars)
       .AsMap(x => x.Type);

其中Bar.Type用作字典中的索引字段。

FluentNHibernate mapping for Dictionary