我有一个 NHibernate 映射问题,我可以使用帮助 - 文档和示例对我来说似乎很不清楚。
我有一个类,其中包含另一个类的字典。我不确定正确的映射,并且我尝试过的所有操作要么无法映射,要么在读取数据时出现 NHibernate 异常。
2类是:
public class SnippetConfigParam
{
public virtual int SnippetValueKey { get; set; }
public virtual string ParamName { get; set; }
public virtual string Value{ get; set; }
}
public class SnippetConfig
{
public virtual int SnippetKey { get; set; }
public virtual ESnippetType Type{ get; set; }
public virtual string Name { get; set; }
public virtual IDictionary<string, SnippetConfigParam> Params { get; set; }
public virtual string Description{ get; set; }
public virtual VendorPage Page{ get; set; }
}
我最后一次映射尝试是
<map name="Params" table="SnippetConfigValue" lazy="false">
<key column="SnippetConfigKey" />
<index column="SnippetValueKey" type="Int32"/>
<composite-element class ="SnippetConfigParam">
<property name="ParamName" />
<property name="Value" />
</composite-element>
</map>
结果是:
System.InvalidCastException:无法将“System.Int32”类型的对象转换为“System.String”类型。
所以我显然不明白一些事情。数据库表是:
Create Table SnippetConfig
SnippetKey int not null,
...
PrimaryKey( 'SnippetKey' )
Create Table SnippetConfigValue
SnippetValueKey int not null,
...
PrimaryKey( 'SnippetValueKey' ),
Key 'fk' ( 'SnippetConfigKey' ),
Constraint 'fk' foreign key ('SnippetConfigKey' ) references 'SnippetConfig' ('SnippetKey' )...
任何建议将不胜感激。