2012-02-20 8 views
9

Al consultar nuestras consultas desde NHibernate, es claro que el alias de columna no es consistente, que es un problema de rendimiento cuando el plan de ejecución del servidor sql ve la misma consulta como consultas diferentes debido al alias de columna incoherente.NHibernate inconsistent sql column alias

Un ejemplo podría ser algo como esto:

SELECT this_.Id as Id44_0_ FROM dbo.[Foos] this_ 

SELECT this_.Id as Id43_0_ FROM dbo.[Foos] this_ 

¿Hay alguna manera podemos hacer alias de columna consistente?

Estamos utilizando Fluido NHibernate con el mapeo automático

+3

¿Dónde está el código que muestra que esto sucede? –

+0

NHibernate utilizó este tipo de alias con cada consulta que realiza, entonces, ¿qué código le gustaría ver? – Lehto

+0

Las dos consultas que dan como resultado esas instrucciones SQL. –

Respuesta

1

Opcionalmente mediante el establecimiento de proyección que puede obtener un nombre personalizado como un alias en la consulta de la siguiente manera

Projections.Property("candidate.Name"), "CandidateName"); 

How to use NHibernate Projections to retrieve a collection

+0

Tendremos que cambiar más de 80 clases y no es aceptable, pero gracias. – Lehto

0

nunca visto misma Consulta de NH para generar SQL diferentes mientras tu aplicación se está ejecutando. Creo que no necesita preocuparse por el rendimiento debido a esto. (Excepto en el caso en que necesite iniciar y detener su aplicación con frecuencia)

Cualquier cambio que necesite para hacer consultas SQL consistentes todo el tiempo (incluso después de los cambios en el modelo de datos) son soluciones dolorosas, no absolutamente buenas, y piensa que no es aceptable para ti.

Cuestiones relacionadas