2010-06-24 10 views
5

Sto utilizzando ISession.SaveOrUpdate per inserire nuovi oggetti e updaet esistenti.Come restituire id da NHibernate ISession.SaveOrUpdate

Se utilizzo ISession.Save (..) restituisce l'identità del record inserito.

Per SaveOrUpdate sto facendo quanto segue:

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

E 'questo il modo migliore per restituire la mia identità?

Grazie,

Ben

+0

Penso che sia un buon modo per farlo, e probabilmente quello che avrei fatto io stesso. – simendsjo

risposta

7

Non c'è niente di sbagliato in questo. Ma poiché l'identità è impostata sull'oggetto, perché non rendere invalido il metodo:

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

ottimo, grazie per aver chiarito –

+0

SE il metodo è parte di un repository o dao potresti trovare conveniente (ma non necessario) restituire l'entità stessa; Sharp Arch, per esempio, fa questo. – Berryl