2010-06-24 14 views
5

Estoy utilizando ISession.SaveOrUpdate para insertar nuevos objetos y actualizar existentes.Cómo devolver el ID de NHibernate ISession.SaveOrUpdate

Si uso ISession.Save (..) esto devuelve la identidad del registro insertado.

Para saveOrUpdate que estoy haciendo lo siguiente:

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

Es esta la mejor manera de volver a mi identidad?

Gracias,

Ben

+0

Creo que parece una buena manera de hacerlo, y probablemente lo hubiera hecho yo mismo. – simendsjo

Respuesta

7

No hay nada de malo en eso. Pero dado que la identidad se establece en el objeto, ¿por qué no hacer que el método devuelva el vacío?

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

genial, gracias por aclarar –

+0

SI el método es parte de un repositorio o dao, puede que le resulte conveniente (pero no necesario) devolver la entidad en sí; Sharp Arch, por su parte, hace esto. – Berryl

Cuestiones relacionadas