visual studio net framework example nhibernate

studio - nhibernate vs entity framework



SaveOrUpdate Vs Update y Save en NHibernate (1)

Cuál es la diferencia entre SaveOrUpdate y Save / Update en NHibernate. ¿Por qué no usarías siempre SaveOrUpdate? Además, ¿cuál es el sentido de SaveOrUpdateCopy?


El Capítulo 9 cubre todo esto mejor que yo:

http://nhibernate.info/doc/nh/en/index.html

Pero las notas del acantilado:

Save() toma un nuevo objeto sin identificador y lo asocia a la sesión. El objeto será INSERT ''d.

Update() toma un objeto existente que tiene un identificador pero no está en la sesión y lo conecta a la sesión. El objeto será UPDATE ''d.

SaveOrUpdate() mira el identificador y decide qué es necesario en lo anterior.

SaveOrUpdateCopy() es especial porque dice que tiene dos objetos con el mismo identificador, uno en la sesión y otro no. Si intenta update el que no está en la sesión, se lanza una excepción normalmente (ahora está tratando de adjuntar dos objetos que representan el mismo objeto persistente a la sesión). SaveOrUpdateCopy() copia el estado del objeto sin sesión al estado del objeto de sesión.

No estoy seguro de cómo vas a usar NH, pero en muchos casos todo lo que necesitas es Save() . La sesión está haciendo TODO el trabajo necesario para saber qué debe actualizarse y simplemente Flush() o un Commit() hace todo lo que necesita.