I've already read http://stackoverflow.com/questions/478296/nhibernate-changing-sub-types and I don't find that satisfactory to my situation.
My system allows users to schedule jobs. Schedules can be set up with different types of schedule criteria (Once only, Daily, Weekly, Monthly by day of month, and Monthly by week of month). Each of these have very different data and behavior. It is perfectly valid for a user to change a schedule from one criteria type to another.
I attempted to make this work by grabbing the schedule id that was saved previously, creating a new instance of the schedule with the new type, setting the id, and saving. All of the data was updated as expected, except, of course, the discriminator.
Changing my model would be an absolute last resort.
At this point, I am looking at saving the new criteria (with a new id) and updating the references to it, then deleting the old criteria.
Does someone have a better idea?