NHibernate:映射列表字典
我的类有一个类型为NHibernate:映射列表字典,nhibernate,mapping,Nhibernate,Mapping,我的类有一个类型为Dictionary的字段。用NHibernate绘制地图的最佳方式是什么?我最好把它作为一个字段,不要暴露出来 非常感谢 乌卢您不能直接映射它。有两条规则需要考虑: 始终为集合使用接口(例如,IList,IDictionary) NH不支持嵌套集合。我以前从未见过申请它的人 从来没有听到有人要求 将字符串列表放入类中并使用接口: class StringList { IList<string> Strings { get; private set; } }
Dictionary
的字段。用NHibernate绘制地图的最佳方式是什么?我最好把它作为一个字段,不要暴露出来
非常感谢
乌卢您不能直接映射它。有两条规则需要考虑:
- 始终为集合使用接口(例如,
,IList
)IDictionary
- NH不支持嵌套集合。我以前从未见过申请它的人 从来没有听到有人要求
class StringList
{
IList<string> Strings { get; private set; }
}
class Entity
{
private IDictionary<string, StringList> stringDict;
}
类字符串列表
{
IList字符串{get;private set;}
}
类实体
{
私人词典;
}
你甚至可以看到开设这样一门课的一些好处
映射:
<class name="Entity">
...
<map name="stringDict" table="Entity_StringDict" access="field">
<key column="Entity_FK"/>
<index column="Key" type="System.String"/>
<composite-element class="StringList">
<bag name="Strings" table="Entity_StringDict_Strings">
<key column="Entity_StringDict_FK"/>
<element type="System.String" column="String"/>
</bag>
</composite-element>
</map>
</class>
...
映射到三个表:
- 表
实体
- 表
实体\u StringDict
- 列
实体\u FK
- 列
键
- 列
- 表
Entity\u StringDict\u Strings
- 列
Entity\u StringDict\u FK
- 列
String
- 列