Я думаю, что вы не правильно отобразили свою сущность. Если это правильно, вы должны сделать какой-то трюк: вы должны видеть не идентификатор, а ссылку на другую сущность, и в этом случае вы сохраните ссылку с нулевым значением. Даже в неправильном случае вы хотите отобразить объект со ссылкой, выраженной в виде идентификатора (который почти всегда неверен), если этот идентификатор может быть обнуляемым, отобразите его как обнуляемый, чтобы вы имели int? и вы можете использовать null для обозначения null вместо трюка -1.
См. Комментарии
Если пользовательский объект внутренне используется в качестве нулевого значения, перехватчик сеанса может помочь: работать с OnSave и обрабатывать особый случай, заменив фиктивный объект нулевым.
Здесь вы можете найти документацию о NH-перехватчиках.
В главе 11.2 того же документа есть часть, относящаяся к событиям, эквивалентам для такого рода проблем.