我试图弄清楚如何在流畅的1.0 RTM中映射IDictionary属性.
根据我的理解,这转化为三元关联.
例:
class Bar
{
public IDictionary<SomeEntity, int> Foo {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后,Bar.hbm.xml将包含:
<map name="Foo" table="BarFooTable">
<key column="..."/>
<index-many-to-many class="SomeEntity" column="SomeEntity_Id"/>
<element column="Value" type="int"/>
</map>
Run Code Online (Sandbox Code Playgroud)
我必须用流利的nhibernate来编写这个映射xml?
这里感兴趣的是密钥是实体类型,而值是值类型.(编辑:至少,这似乎区别于堆栈溢出或谷歌组中的各种其他示例和问题,它们是值 - 值或键 - 键)
经过多次实验,我可以为IDictionary<SomeEntity,SomeEntity>(纯实体类型)生成映射:
HasManyToMany(x => x.Foo)
.AsMap("Key")
.AsTernaryAssociation("Key2", "Value")
;
Run Code Online (Sandbox Code Playgroud)
我还可以为IDictionary<int,int>(纯值类型)生成映射:
HasMany(x => x.Foo)
.AsMap<int>("Key")
.Element("Value")
;
Run Code Online (Sandbox Code Playgroud)
我甚至可以通过某种方式为a生成映射IDictionary<int, SomeValue),尽管NHibernate都不会接受.
但我无法弄清楚如何为IDictionary<SomeValue, int>我想要的产生映射.有人可以提供一些提示吗?
使用Fluent NHibernate映射简单Dictionary属性的最佳方法是什么?