Свободный вопрос о наследовании NHibernate / NHibernate - PullRequest
0 голосов
/ 07 августа 2009

Возможно, глупый вопрос, но у меня есть несколько сущностей, все унаследованные от базовой сущности. Базовый объект не имеет таблицы в базе данных. У каждой сущности есть своя собственная таблица, и определение таблицы точно такое же. Чрезвычайно упрощенный пример кода приведен ниже.

public abstract class BaseEntity
{
    public virtual string someProperty {get; set;} 
}

public class Entity1 : BaseEntity{}

public class Entity2 : BaseEntity{}

public class CompletelyDifferentEntity
{
    public virtual IList<BaseEntity> {get; set;}
}

Я создал сопоставления для сущностей. В других моих классах домена, если я ссылаюсь на конкретные классы, все работает нормально, но если я заменяю другие мои классы на ссылку BaseEntity, вместо этого я получаю исключение отображения, поскольку BaseEntity не отображается. Это то, где я должен использовать дискриминатор подкласса? Я предполагаю, что не вижу правильного способа сделать это, если у базы нет связанной таблицы, и у подклассов нет определенного столбца, который отличается между определениями таблицы.

1 Ответ

1 голос
/ 07 августа 2009

Вы должны использовать одну из трех доступных стратегий отображения наследования. Исходя из вашего описания, вы должны рассмотреть возможность использования таблицы для каждого конкретного класса или изменить схему БД.

Подробнее о плюсах и минусах стратегий вы можете найти здесь: https://www.hibernate.org/hib_docs/nhibernate/html/inheritance.html.

...