Отображение ссылочного базового класса с помощью свободно используемого nhibernate - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь отобразить иерархию классов, которая выглядит следующим образом:

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; }
}

Теперь, когда я пытаюськарта с беглой функцией автоматического сопоставления nhibernate Я получаю сообщение об ошибке, что класс D относится к несопоставленному классу A, хотя класс A фактически отображается через подклассы B и C.

Кто-нибудь знает, как решить эту проблему?

1 Ответ

3 голосов
/ 02 ноября 2011

Если вы не отобразите класс A, классы B и C не будут подклассами. Это просто два класса, которые вообще не связаны. NHibernate ничего не знает о классе A, так как же NHibernate должен знать, как обрабатывать ссылки на класс A?

Не отображать А, потому что это абстракция - это не причина. Вы также можете отобразить интерфейсы.

Может быть, было бы более понятно, что вы хотите сделать, если бы вы показали нам свою модель БД (таблицы).

...