3

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

4

3 回答 3

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 作为字典中的 Key,应注意NHibernate.Type.EnumStringType<MyEnum>可以使用字符串代替字符串,.AsMap<string>以使用字符串值而不是 Ordinal。

于 2014-10-16T07:35:11.190 回答
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);

WhereBar.Type用作字典中的关键字段。

于 2009-12-12T05:41:06.013 回答
3

要将列表映射为字典:

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

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

看看维基:页面的缓存版本实际页面 我已经给出了页面的缓存版本,因为该站点似乎已关闭。

于 2009-09-13T13:02:27.900 回答