使用Fluent NHibernate映射简单Dictionary属性的最佳方法是什么?
答案 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 page,Actual page 我已经提供了页面的缓存版本,因为该网站似乎已关闭。