字典的FluentNHibernate映射

时间:2009-09-11 12:58:34

标签: nhibernate fluent

使用Fluent NHibernate映射简单Dictionary属性的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

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

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用作字典中的关键字段。

答案 1 :(得分:6)

public class PersistedData 
{
    public virtual IDictionary<key, value> Dictionary { get; set; }
}

public class PersistedDataMap : ClassMap<PersistedData>
{
    HasMany(x => x.Dictionary)
            .Table("dict_table")
            .KeyColumn("column_id")
            .AsMap<string>("key")
            .Element("value");
}

这会将Dictionary正确映射到表格dict_table,并使用column_id将其与基本ID相关联。

作为旁注,如果您想在字典中使用Enum作为密钥,则应注意NHibernate.Type.EnumStringType<MyEnum>可用于代替.AsMap<string>中的字符串以使用字符串值而不是序数。

答案 2 :(得分:3)

将列表映射为字典:

HasMany(x => x.Customers)
  .AsMap();

我没用过它;所以不能举一个例子。

看一下wiki: Cached version of the pageActual page 我已经提供了页面的缓存版本,因为该网站似乎已关闭。