2010-06-24 11 views
5

Używam ISession.SaveOrUpdate do wstawiania nowych obiektów i updaet istniejących.Jak wrócić id z NHibernate ISession.SaveOrUpdate

Jeśli używam ISession.Save (..), to zwraca tożsamość wstawionego rekordu.

Dla SaveOrUpdate robie co następuje:

public int Save(Vehicle entity) { 
     using (var txn = _session.BeginTransaction()) { 
      _session.SaveOrUpdate(entity); 
      txn.Commit(); 
     } 
     return entity.Id; 
    } 

Jest to najlepszy sposób, żeby zwrócić moją tożsamość?

Dzięki,

Ben

+0

Myślę, że wygląda to na dobry sposób na zrobienie tego i prawdopodobnie to, co sam bym zrobił. – simendsjo

Odpowiedz

7

Nie ma nic w tym złego. Ale odkąd tożsamość jest ustawiona na obiekcie, dlaczego nie sprawić, by metoda powróciła do skutku:

public void Save(Vehicle entity) { 
    using (var txn = _session.BeginTransaction()) { 
     _session.SaveOrUpdate(entity); 
     txn.Commit(); 
    } 
} 
+0

świetnie, dzięki za wyjaśnienie, –

+0

JEŻELI metoda jest częścią repozytorium lub dao, może się okazać, że wygodnie (ale nie jest to konieczne) zwrócić samą jednostkę; Sharp Arch, dla jednego, robi to. – Berryl