【发布时间】:2010-11-27 11:57:39
【问题描述】:
使用 Fluent NHibernate 映射简单 Dictionary 属性的最佳方法是什么?
【问题讨论】:
标签: nhibernate fluent
使用 Fluent NHibernate 映射简单 Dictionary 属性的最佳方法是什么?
【问题讨论】:
标签: nhibernate fluent
将列表映射为字典:
HasMany(x => x.Customers)
.AsMap();
我没用过;所以不能举个例子。
看看 wiki:Cached version of the page,Actual page 我已经给出了页面的缓存版本,因为该站点似乎已关闭。
【讨论】:
使用简单的类关系,如下所示:
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 用作字典中的关键字段。
【讨论】:
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> 中的字符串,以使用字符串值而不是序数。
【讨论】: