В Session.Save(YourObject)
идентификатор будет заполнен для вашего объекта. Однако это не приведет к немедленной вставке в базу данных. Фактическая вставка будет происходить при очистке сеанса (Transaction.Commit и т. Д.).
Кроме этого, при вашем текущем подходе вы можете распространять идентификатор, который может не отображаться на существующий объект. Например, представьте, что вы передаете Id перед вставкой, а затем вставка завершается неудачей по любой причине. Как справиться с этим противоречивым состоянием? Остерегайтесь этого случая и подобных.
Мой совет вам не распространять информацию о состоянии, которое может быть недействительным.