J. Roberto,

El comportamiento por defecto de NH es hacer un update de todos los campos
con los valores actuales.
Si quieres que mande sólo los campos modificados, tienes que
incluir dynamic-update="true" en el elemento <class>.
Ver http://nhforge.org/doc/nh/en/index.html#mapping-declaration-class (7)

   Diego


2010/5/7 J. Roberto Ramírez <[email protected]>

> 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

-- 
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