#hibernate #nhibernate #fluent-nhibernate #fluent-nhibernate-mapping
#режим гибернации #nhibernate #свободно владеет языком-nhibernate #fluent-nhibernate-отображение
Вопрос:
В наиболее упрощенной версии моя проблема заключается в следующем
public class D{
public List<A> ListofA {get;set;}
}
public interface A{
}
public class B implements A{
}
public class C implements A{
}
class B
сопоставляет с таблицей B
class C
сопоставляет с таблицей C
A — это просто интерфейс, который не сопоставляется ни с какой таблицей.
Как мне определить полиморфную ( many-to-many
) связь между D -> A
Я использую NHibernate
с. FluentMapping
Ответ №1:
Я пытаюсь ответить на свой собственный вопрос. Однако я хотел бы найти ЛУЧШЕЕ / БОЛЕЕ РАЦИОНАЛЬНОЕ решение этой проблемы.
Вот мое решение:
Редизайн Class D
Я перепроектирую class D
как
public class D {
public List<MagicObj> ListofA {get;set;}
}
//New Entity added which was not there in the question before.
public class MagicObj{
public A ActualEntity{get;set;}
}
В остальных объектах изменений нет.
public interface A{
}
public class B implements A{
}
public class C implements A{
}
Это изменение дизайна должно позволить мне сопоставить
Свободное сопоставление
для вышеупомянутой переработанной структуры классов
D->MagicObj as HasMany(x=>x.ListofA)
MagicObj->A as ReferenceAny(x=>x.ActualEntity)
.EntityIdentifierColumn("EntityType")
.EntityIdentifierColumn("EntityId");
Думаю, я решил использовать добавить новое отношение между Class D
и Class A
это
Я не смог найти способ отобразить его напрямую в Fluent.