假设我有一个“SomeClass”类,它有一个查找字典: 数据字典;
我目前在SomeClass.hbm.xml中有一个映射,如下所示:
<class name="SomeClass>
<id name="ID" type="System.Guid">
<generator class="guid" />
</id>
<map name="DictionaryProperty" table="SomeClass_Data">
<key column="SomeClassID" />
<index column="Key" type="System.String" />
<element column="Value" type="System.String" />
</map>
</class>
我想使用NHibernate的新版本(版本3.2)按代码映射。我如何映射上面的字典属性?
目前我有:
public class SomeClassMap :ClassMap<SomeClass>
{
public SomeClassMap()
{
Id(x => x.ID, mapping => mapping.Generator(Generators.Guid));
Map(x = x.DictionaryProperty, mapping =>
{
mapping.Key(k => k.Column("SomeClassID"));
mapping.Table("SomeClassData");
});
}
}
大多数情况下,我不知道如何指定索引的等价物和字典映射的元素。
答案 0 :(得分:5)
字典映射的每个部分都需要一个单独的委托:
Map(x => x.DictionaryProperty,
mapping =>
{
mapping.Key(k => k.Column("SomeClassID"));
mapping.Table("SomeClassData");
},
mapping => mapping.Element(k => k.Column("Key")),
mapping => mapping.Element(k => k.Column("Value")));
第一个Element
是map-key
(index
已过时map
),第二个是element
。