Sorry folks, I did not realize this got a bit confounded in
formatting.
The actual fluent nhibernate code and corresponding generated hbm.xml
code is below.
For an IDictionary<int,int>:
HasMany(x => x.IntDict)
.AsMap<int>("Key")
.Element("Value")
;
<map name="IntDict">
<key>
<column name="Node_id" />
</key>
<index type="System.Int32, mscorlib, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Key" />
</index>
<element type="System.Int32, mscorlib, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Value" />
</element>
</map>
And for an IDictionary<SomeEntity,SomeEntity>:
HasManyToMany(x => x.EntityDict)
.AsMap("Key")
.AsTernaryAssociation("Key", "Value")
;
<map name="EntityDict">
<key>
<column name="Node_id" />
</key>
<index-many-to-many class="ClassLibrary1.TernaryJoy.SomeEntity,
ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="Key" />
</index-many-to-many>
<many-to-many class="ClassLibrary1.TernaryJoy.SomeEntity,
ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="Value" />
</many-to-many>
</map>
And an IDictionary<SomeEntity,int>:
// the fluent code remains a mystery... anybody?
<map name="HybridDict">
<key column="Entity_Id" />
<index-many-to-many class="SomeEntity" column="SomeEntity_Id"/
>
<element column="Value" type="int"/>
</map>