6

¿Hay algún buen ejemplo de cómo usar esto (NHibernate.Criterion.IdentifierEqExpression) en línea? No pude encontrar ninguno. Estoy un poco confundido acerca de lo que se supone que debes pasar al constructor.NHibernate - Force escaping en nombres de tabla

Paso en un int32 de 1 y sigo pensando que mi prueba básicamente debe hacer un tipo de consulta "donde id = 1" y en su lugar explota con "where id =?" y algo sobre los parámetros posicionales. Si eso no es lo que se supone que debe pasar al constructor ... ¿qué es?

verdadero problema
Cuando miro a la salida de SQL que parece estar funcionando correctamente excepto por el hecho de que mi tabla se denomina usuario y NHibernate no está encerrándolo como [usuario]. ¿Alguna forma de forzar esto?

+0

¿Puedes publicar un ejemplo de tu expresión de criterios por favor? –

+0

No veo la relación entre IdentifierEqExpression y escapando del nombre de tabla ... explique un poco más –

Respuesta

15

Indique el nombre de la tabla como ` User `. Por ejemplo:

(HBM) 
<class name="User" table="`User`"> 

(Fluent) 
public UserMap() 
{ 
    WithTable("`User`"); 
    ... 

(Mapping By Code) 
public UserMap() 
{ 
    Table("`User`"); 
    ... 

Del mismo modo, con columnas que tendrá que hacer algo como:

Map(x => x.IsCurrent, "`Current`"); 

Oh las alegrías de trabajar con DBs heredados.

+2

Puede usar el backtick (') para escanear nombres de una manera independiente de la base de datos ([] son ​​SQL Server específicos). –

+1

Buen punto, vi que estaba usando [] y ni siquiera lo pensó. Actualizaré mi publicación en interés de las mejores prácticas. –

+0

Cool. No tenía idea back-tick era el estándar. ¿Eso es algo que Hibernate acaba de tomar prestado de MySQL, y luego analiza para que sea una base de datos independiente? Lástima que la configuración del dialecto no lo solucione por ti. – BuddyJoe

Cuestiones relacionadas