Это то, что я делаю, за исключением того, что я обычно использую метод IsNew () или IsTransient () в базовом классе или расширении, которое выполняет эту проверку. Тогда код становится:
public Boolean IsTransient(){
return this.Id == default(Guid);
}
Не забывайте, что метод Session.SaveOrUpdate (entity) вызовет обновление сохраняемой сущности (в отличие от вставки), чтобы вы могли использовать этот метод и игнорировать проверку. Я предпочитаю делать чек, хотя.