Comencé a usar NHibernate 3.0 y PostgreSQL para un proyecto pequeño, hasta ahora el viaje ha sido un poco difícil debido a que el sitio NHibernate está inactivo y estoy seguro de que esta respuesta está en su sitio web en alguna parte.Citando nombres de columnas con NHibernate y PostgreSQL
que tienen una base de datos que tiene estas dos columnas (por supuesto hay más en la mesa real):
int ID
String Feature
ahora estoy usando un FluentNHibernate para hacer el mapeo por lo menos así:
public class MyEntityMap: ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.ID);
Map(x => x.Feature);
}
}
y una consulta LINQ para salir los datos
var strucs = from str in session.Query<MyEntity>()
where str.ID < 5
select str;
la consulta generará el correcto Declaración de SQL, bien tipo de. El problema es, porque tengo mis letras mayúsculas en los nombres de columna hay que envolverlos entre comillas pero el código SQL generado es como la siguiente:
SELECT this_.ID as ID0_0_, this_.feature as feature0_0_,
FROM "MyEntity" this_ WHERE this_.ID < 5
Cuando las columnas no tienen comillas alrededor de ellos. Si ejecuto esto obtengo una "columna this_.id" no se encuentra, etc.
¿Alguien sabe cómo puedo conseguir NHibernate para ajustar los nombres de las columnas entre comillas?
EDIT: No puedo escribir en minúscula los nombres de las columnas ya que hay algunas columnas que un programa de terceros debe estar todo en mayúsculas.
He intentado añadir .ExposeConfiguration (CFG => cfg.SetProperty ("hbm2ddl.keywords", "auto-cita") pero no parece hacer nada.
hmm arroja un error sobre 'anulación pública IDataBaseSchema GetDataBaseSchema (conexión DbConnection) 'porque el' PostgreSQLDialect' doesn' t anularlo para proporcionar uno, por lo que el código en 'if (settings.IsAutoQuoteEnabled)' arroja una excepción y simplemente lo ignoran. Me pregunto por qué nadie ha implementado ese método para PostgreSQL. –
Gracias por el punto en la dirección correcta, implementé mi propio GetDataBaseSchema rápido para PostgreSQLDialect y parece estar funcionando bien ahora. –
@Nathan, ¿podría compartir la solución? –