2009-07-28 11 views
7

Acabo de actualizar a NHibernate 2.1 de 2.0 y w/o cambiar mi esquema ahora me sale el error:NHibernate: "Columna 'Palabra reservada' no pertenece a la tabla ReservedWords." error

Column 'Reserved Word' does not belong to table ReservedWords.

cuando se trata de .OpenSession().

puedo añadir la propiedad:

<property name="hbm2ddl.keywords">none</property> 

al archivo hibernate.cfg.xml, que "fija" el error.

Sin embargo, sería útil saber por qué ocurre este error con la actualización y cómo podría solucionarlo.

+0

lo DBMS? . –

+0

¿Has visto este hilo? http://groups.google.com/group/nhusers/browse_thread/thread/87811677a167c3c9 –

+0

Me aparece un error similar. ¿Puedes proporcionar información adicional sobre tu configuración? El mío es MySQL 5.1, el conector MySQL ->. NET 6.1, .NET 3.5 SP1 y NHibernate 2.0. También estoy usando Fluent-NHibernate 1.0 RTM. –

Respuesta

1

Tomado de http://fabiomaulo.blogspot.com/2009/06/auto-quote-tablecolumn-names.html

NHibernate añadido la posibilidad de citar automáticamente los nombres de tablas y columnas que son palabras reservadas para la base de datos seleccionada.

Por ejemplo, si tiene una clase con una propiedad "Pedido", si intenta hacer: SELECCIONAR Orden DESDE MyTable, entonces la mayoría de la base de datos no podrá analizar la consulta. En MSSQL, tendría que hacer SELECT [Order] FROM MyTable para que funcione (de ahí la cita de los campos).

Genéricamente en NHibernate puede citar los campos usando `backticks` - es decir. en su mapeo, especificando la columna para el Pedido como Order, le permitiría usar una columna llamada Pedido.

El cambio en NHibernate permite que los campos que se deben presupuestar se coticen automáticamente, por lo que no es necesario agregar las cotizaciones manualmente.

Tomado de esa URL, por ejemplo mapeo:

<class name="Order"> 
    <id type="int"> 
     <generator class="native"/> 
    </id> 
    <property name="Select"/> 
    <property name="From"/> 
    <property name="And"/> 
    <property name="Column"/> 
    <property name="Name"/> 
</class> 

funcionaría sin tener que citar cualquiera de los nombres de tabla o columna

Cuestiones relacionadas