De acuerdo al caso, puede mejorar o empeorar la performance, porque tenés un paso más (construcción dinámica del query) y por una cuestión de caching del query plan (cada combinación posible de campos modificados es una query distinta).
Yo lo uso por defecto, pero es cuestión de probar qué te resulta mejor. Diego 2010/5/7 J. Roberto Ramírez <[email protected]> > Muchas gracias Fabricio y Diego, hacia falta asignar a mi mapping > dynamic-update="true", > > Al parecer me hizo falta un poco de lectura en la API, y lo pase sin darme > cuenta... > > ¿No tiene desventajas hacerlo de este modo? > > Saludos.. > > > J. Roberto Ramírez > www.robertoramirez.com.mx > Social Media [image: Linkedin] > <http://www.linkedin.com/in/jramirezleyva>[image: > Twitter] <http://twitter.com/bobbher> > > > 2010/5/7 Diego Mijelshon <[email protected]> > > 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 >> > > -- > 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
