#nhibernate #fluent-nhibernate #fluent-nhibernate-mapping
#nhibernate #fluent-nhibernate #fluent-nhibernate-отображение
Вопрос:
Я пытаюсь отобразить иерархию классов, которая выглядит следующим образом:
public abstract class A { }
public class B : A { }
public class C : A { }
Я не хочу сопоставлять класс A, потому что он абстрактный, я знаю, что могу сделать:
.IgnoreBase<A>()
чтобы не сопоставлять A и сопоставлять все свойства A в B и C. Но моя проблема в том, что у меня также есть другой класс D, который выглядит следующим образом:
public class D {
public virtual A a { get; set; }
}
Теперь, когда я пытаюсь сопоставить с помощью функции автоматического сопоставления fluent nhibernate, я получаю сообщение об ошибке, что класс D относится к незамеченному классу A, хотя класс A фактически сопоставляется через подклассы B и C.
Кто-нибудь знает, как это решить?
Ответ №1:
Если вы не сопоставите класс A, классы B и C не будут подклассами. Это всего лишь два класса, которые вообще не связаны. NHibernate ничего не знает о классе A, так как же NHibernate должен знать, как обрабатывать ссылки на класс A?
Не отображать A, потому что он абстрактный, не является причиной. Вы также можете сопоставлять интерфейсы.
Возможно, было бы более понятно, что вы хотите сделать, если бы вы показали нам свою модель БД (таблицы).