Я уже прочитал NHibernate - Изменение подтипов , и я не нахожу это удовлетворительным для моей ситуации.
Моя система позволяет пользователям планировать работу. Расписания могут быть настроены с различными типами критериев расписания (Только один раз, Ежедневно, Еженедельно, Ежемесячно по дням месяца и Ежемесячно по неделям месяца). У каждого из них очень разные данные и поведение. Абсолютно правильно для пользователя изменить расписание с одного типа критериев на другой.
Я попытался сделать эту работу, взяв идентификатор расписания, который был сохранен ранее, создав новый экземпляр расписания с новым типом, установив идентификатор и сохранив. Все данные были обновлены, как и ожидалось, за исключением, конечно, дискриминатора.
Изменение моей модели было бы абсолютным последним средством.
На данный момент я пытаюсь сохранить новые критерии (с новым идентификатором) и обновить ссылки на них, а затем удалить старые критерии.
У кого-нибудь есть идея получше?