У меня есть класс StoreHours, который имеет составной ключ и работает отлично. Появился новый спрос на часы другого типа, которые должны быть возвращены. Я подумал «просто, я абстрагирую базовый класс, получу две конкретные реализации и заменю свои ссылки в приложении на один из новых классов». Однако после этого мои модульные тесты не прошли с
X.Test.StoreTest.HoursTest: NHibernate.InstantiationException: Невозможно создать экземпляр абстрактного класса или интерфейса: X.Model.StoreHours
Мой файл сопоставления выглядит как
<class name="StoreHours" table="StoreHour" abstract="true" discriminator-value="0" >
<composite-id>
<key-many-to-one name="Store"
class="Store"
column="StoreUid"/>
<key-property name="DayOfWeek"
column="DayOfWeekId"
type="System.DayOfWeek" />
</composite-id>
<discriminator column="StoreHourType" type="Byte" />
<property name="OpenMinutes" column="OpenTime" />
<property name="CloseMinutes" column="CloseTime" />
<subclass name="OfficeHours" discriminator-value="1" />
<subclass name="AccessHours" discriminator-value="2" />
</class>
Я нашел здесь кого-то с подобными проблемами здесь и пошел по пути их решения, но на самом деле у него возникло еще больше проблем, чем у меня.
Я могу отлично сохранить записи в базе данных, но при загрузке NHibernate пытается создать экземпляр абстрактного «StoreHours», даже если у меня только строго установлен тип с «OfficeHours»
Это кажется довольно тривиальным требованием, поэтому я полагаю, что я должен сделать что-то простое неправильно. Все подсказки приветствуются.