ヘルプを使用できるNHibernateマッピングの問題があります-ドキュメントとサンプルは私には非常に不明確に見えます。
別のクラスの辞書を含む1つのクラスがあります。正しいマッピングがわからないので、試したすべてがマッピングに失敗するか、データの読み取りで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' )...
アドバイスをいただければ幸いです。