У меня проблемы с выяснением того, как сопоставить интерфейс при использовании составного ключа.
Я пытаюсь сделать следующее:
interface Ifoo
{
int someInt {get;}
int id {get;}
}
class bar1: Ifoo
{
int someInt {get; protected internal set;}
int id {get; protected internal set;}
}
class bar2: Ifoo
{
int someInt {get; protected internal set;}
int id {get; protected internal set;}
}
class someOtherClass
{
Ifoo myFoo {get; protected internal set;}
int id {get; protected internal set;}
}
public class someOtherClassMap: ClassMap<someOtherClass>
{
CompositeId()
.KeyReference(x => x.myFoo, "fooID")
.KeyProperty(x => x.id, "id");
References(x => x.myFoo)
.Class(typeof (foo1))
.Class(typeof (foo2))
.Column("fooID")
.Not.Insert()
.Not.Update();
}
Ссылки работают без проблем, но я не могу заставить KeyReference работать, и, похоже, нет никакого ".Class", который я мог бы использовать, как я могу с ссылками.
Я читаю:
Свободный NHibernate, работа с интерфейсами
Программирование интерфейсов при отображении с помощью Fluent NHibernate
и это позволило мне решить проблему со ссылками, но я не нашел обходного пути для KeyReference. Есть ли что-то очевидное, что я упускаю, потому что я некоторое время гуглял и до сих пор не смог ничего найти.