Если 0 является допустимым первичным ключом в вашем контексте, то да, это будет ненадежно.
По сути, «несохраненное значение» для идентификатора объекта определяет, является ли оно временным или постоянным.По умолчанию для типа установлено значение null или default ().Вы можете установить это вручную, когда вы делаете свое отображение.
Пока ваша логика в приведенном выше коде соответствует тому, что Nhibernate считает временным объектом, вы хороши.И Nhibernate примет любой объект, свойство Id которого равно «несохраненному значению», как временное.