Использовать enum
Замените вашу ступень класса на Enum
public enum Stage
{
Rejected, None, Approved, Etc
}
В простом отображении NHibernate добавьте перечисление Stage на карту
<property name="Stage"></property>
В вашей базе данных вы можете просто создать столбец Stage для int32, и Nhibernate выяснит, как сохранить и автоматически загрузить enum.
Преимущество использования enum состоит в том, что вы всегда можете привести enum к int и уменьшить или увеличить, чтобы получить предыдущий или следующий этап (при условии, что вы просто добавляете их в 0..N).
Stage nextStage = (Stage)(((int)currentDocument.Stage)++);
Stage previousStage = (Stage)(((int)currentDocument.Stage)--);
В противном случае вы можете использовать запрос linq для получения предыдущего или следующего шага.
Редактировать
До сих пор в своих требованиях вы не указывали, что вам нужно что-либо из сложности общего рабочего процесса. Вот пример приложения, в котором используется WWF с системой утверждения документов, аналогичной тому, что вам требуется.
Пока вам действительно не понадобится что-то из сложности WWF. Я бы порекомендовал вам использовать enum, а затем рефакторинг, когда ваши требования изменятся. Таким образом, вы не реализуете функцию «на всякий случай».