Я начал использовать NHibernate 3.0 и PostgreSQL для небольшого проекта, но пока что путь был немного тяжелым из-за неработоспособности сайта NHibernate, и я уверен, что этот ответ где-то есть на их сайте.
У меня есть база данных, в которой есть эти два столбца (конечно, в реальной таблице их больше):
int ID
String Feature
теперь я использую FluentNHibernate для сопоставления, поэтому что-то вроде этого:
public class MyEntityMap: ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.ID);
Map(x => x.Feature);
}
}
и запрос LINQ для получения данных
var strucs = from str in session.Query<MyEntity>()
where str.ID < 5
select str;
Запрос сгенерирует правильный оператор SQL, что-то вроде.Проблема в том, что в именах моих столбцов есть заглавные буквы, поэтому их нужно заключать в кавычки, но сгенерированный код SQL выглядит примерно так:
SELECT this_.ID as ID0_0_, this_.feature as feature0_0_,
FROM "MyEntity" this_ WHERE this_.ID < 5
Там, где столбцы не имеют кавычек вокруг них.Если я запускаю это, я получаю "column this_.id" не найден и т. Д.
Кто-нибудь знает, как я могу заставить NHibernate заключать имена столбцов в кавычки?
РЕДАКТИРОВАТЬ: Я не могу прописать имена столбцов в нижнем регистре, так как есть некоторые столбцы, в которых сторонней программе нужно, чтобы все были прописными.
Я попытался добавить .ExposeConfiguration (cfg => cfg.SetProperty ("hbm2ddl.keywords "," auto-quote "), но, похоже, ничего не делает.