Я пытаюсь переключить .hbm
сопоставления на текущие сопоставления и имею проблему с сопоставлением составных идентификаторов и использованием интерфейсов
. Класс выглядит следующим образом:
public class ClassWithCompositeId {
public virtual IKeyOne KeyOne { get; set; }
public virtual IKeyTwo KeyTwo { get; set; }
}
наше отображение hbm выглядит следующим образом:
<hibernate-mapping ...>
<class name="ClassWithCompositeId" table="t_classwithcompositeid">
<composite-id>
<key-many-to-one name="KeyOne" column="colkeyone" class="company.namespace.boSkillBase, BL_Stammdaten" />
<key-many-to-one name="KeyTwo" column="colkeytwo" class="boQualifikation" />
</composite-id>
</hibernate-mapping>
Обратите внимание, что мы получили интерфейсы в классе!Нет, я пытаюсь сопоставить это с Fluent nhibernate.
Map {
public ClassWithCompositeIdMap() {
CompositeId()
.KeyReference(x => x.KeyOne, "colkeyone")
.KeyReference(x => x.KeyTwo, "colkeytwo");
...
}
}
Но теперь Fluent генерирует отображение следующим образом:
...
<composite-id mapped="false" unsaved-value="undefined">
<key-many-to-one name="KeyOne" class="company.namespace.IKeyOne, Interfaces, Version=0.1.4.3379, Culture=neutral, PublicKeyToken=null">
<column name="colkeyone" />
</key-many-to-one>
<key-many-to-one name="KeyTwo" class="company.namespace.IKeyTwo, Interfaces, Version=0.1.4.3379, Culture=neutral, PublicKeyToken=null">
<column name="colkeytwo" />
</key-many-to-one>
</composite-id>
...
Атрибут "Class" теперь указывает на интерфейс, а нереализации этого интерфейса, что приводит к ошибке.
Как я могу сказать Fluent nHibernate использовать другой класс в качестве значения атрибута?