Buenas tardes a todo el grupo.

Tengo una duda en relación a como nuestro querido NH se comporta en los
Updates.

Supongamos que yo tengo una clase Persona.cs.

public class Persona {
 private Int64 _id;
 private String _nombre;
 private String _apellidoPaterno;
 private String _apellidoMaterno;
}

Por supuesto su respectivo mapping:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core"
namespace="Core">
  <class name="Persona" table="tblPersonas" lazy="false">
    <id name="Id" column="id" type="System.Int64" unsaved-value="0">
      <generator class="identity" />
    </id>
    <property name="Nombre" column="nombre" type ="System.String" />
    <property name="ApellidoPaterno" column="apellidoPaterno" type
="System.String" />
    <property name="ApellidoMaterno" column="apellidoMaterno" type
="System.String" />
  </class>
</hibernate-mapping>

Tengo un fragmento de código en mi aplicación como el siguiente:

using(var s = sessions.OpenSession())
  using(var tx = s.BeginTransaction()) {
    var persona = s.Get<Persona>(1);
    persona.Nombre = "Nuevo nombre";
    tx.Commit();
  }
}

Quisiera saber porque NH al hacer hit a la base de datos me esta haciendo un
update a todos los campos de la tabla de Personas:

UPDATE tblPersonas SET nombre = "Nuevo nombre", apellidoPaterno = "Apellido
actual", apellidoMaterno = "Apellido actual" WHERE id = 1

¿Hay manera de evitar esto? ¿Hay modo de únicamente decirle a NH que de la
tabla Personas el único registro modificado fue el Nombre? ¿Si es así hacer
update solamente sobre el campo Nombre?

Muchas gracias a todos.


J. Roberto Ramírez
www.robertoramirez.com.mx
Social Media [image: Linkedin]
<http://www.linkedin.com/in/jramirezleyva>[image:
Twitter] <http://twitter.com/bobbher>

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a