Я пытаюсь выяснить, как сопоставить свойство IDictionary в версии 1.0 RTM.
Насколько я понимаю, это означает троичную ассоциацию.
Пример:
class Bar
{
public IDictionary<SomeEntity, int> Foo {get; set;}
}
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>
Что мне нужно написать в беглом nhibernate для создания этого xml-файла сопоставления?
Интересно, что ключ является типом сущности, а значение - типом значения. (редактировать: по крайней мере, это, кажется, отличается от других примеров и вопросов, связанных с stackoverflow или группами google, которые представляют собой значение-значение или ключ-ключ)
После долгих экспериментов я могу создать отображение для IDictionary<SomeEntity,SomeEntity>
(чистые типы сущностей):
HasManyToMany(x => x.Foo)
.AsMap("Key")
.AsTernaryAssociation("Key2", "Value")
;
Я также могу создать отображение для IDictionary<int,int>
(типы с чистыми значениями):
HasMany(x => x.Foo)
.AsMap<int>("Key")
.Element("Value")
;
Я даже могу получить какой-то способ создания сопоставления для IDictionary<int, SomeValue)
, хотя ни один из них не будет принят NHibernate.
Но я не могу понять, как создать отображение для IDictionary<SomeValue, int>
, что я и хочу. Может кто-нибудь дать несколько советов?