key-words significa que NH logra parsear bien los SQL-chunk que es posible escribir en el attribute 'formula' del mapping.
auto-quote significa que NH recorre, controla y eventualmente modifica cada elemento del mapping. El trabajo addiccional lleva un tiempito según el tamaño del dominio a persistir, por ese motivo es una opciòn. En practica si uno sabe que su app. funcionará solo con msSQL y usò el quote en el mapping en los dos o tres lugares que necesitó para su domain, no es necesario que espere ese tiempo addiccional. Meter auto-quote como default significaría que todos esperan ese tiempo addiccional pero tienen la "cosa" mas simple al mejor estilo MS...lo cual no significa que esté mal para nada. -- Fabio Maulo El 09/12/2010, a las 16:24, "Pedro J. Molina" <[email protected]> escribió: > Buenos dias a todos: > > En mi pruebas con NHibernate describi un error en mi código que en > principio atribuí a un error en NH ( http://216.121.112.228/browse/NH-2453 > ). > > Básicamente el resumen es que tenia una columna en tabla llamada Key > que una tabla. Donde Key es una palabra reservada para SQL Server y > por tanto las consultas correctas SQL deben escapar correctamente Key > del siguiente modo por ejempo: aliasDeTabla.[Key] cuando por > contra, por defecto, NH me estaba generando: aliasDeTabla.Key > > Con la amable y pronta ayuda de Fabio Maulo, me indico que realmente > existe una manera de configurar NH para que funcione de este modo > empleando el parámetro: <property name="hbm2ddl.keywords">auto-quote</ > property> > > Hasta aqui asunto resuelto. Falsa alarma de bug y mi código > funcionando de nuevo. > > Sobre este tema les expongo una reflexión que adelantaba a Fabio y que > le pareció conveniente traer aquí para compartirla: > > Como describe Fabio en su blog: > http://fabiomaulo.blogspot.com/2009/06/auto-quote-tablecolumn-names.html > el valor por defecto para la propiedad hbm2ddl.keywords es: <property > name="hbm2ddl.keywords">keywords</property> > > ¿Tendria sentido marcar el valor por defecto en NH a auto-quote? > <property name="hbm2ddl.keywords">auto-quote</property> > > Lo planteo porque como bien dice Fabio, un ORM debe ocultar los > detalles de persistencia y facilitar, en la medida de lo posible, el > cambio de la capa de persistencia de un motor relacional a otro con > cambios mínimos en el código y/o mapeos. > En este contexto, las palabras claves son arbitrariamente > seleccionadas por cada fabricante del motor relacional y se reservan > todo aquello que creen necesitar para un futuro. > > La alternativa de hacer emerger la protección (o quotes) en el fichero > de mapping no me parece lo más limpio, por el mismo motivo recién > comentado (lo que es palabra reservada en un motor, o dialecto de SQL > no tiene porque serlo en otro diferente). > > Bajo este punto de vista planteo: ¿tendría sentido que auto-quote > fuera el valor por defecto para hbm2ddl.keywords? > > Seguro que hay otros pros/contras sobre este tema cuando se estableció > el valor por defecto, pero queria preguntar que opinan al respecto. > > Gracias de antemano, > > Pedro J. Molina > > -- > 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
