Заключение в кавычки имен столбцов с NHibernate и PostgreSQL

Я начал использовать 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

Где столбцы не имеют кавычек вокруг них. Если я выполняю это, я получаю "столбец this_. идентификатор" не найден и т.д.

Кто-либо знает, как я могу заставить NHibernate переносить имена столбцов в кавычки?

Править: Я не могу нижний регистр имена столбцов, поскольку существуют некоторые столбцы, что сторонняя программа должна быть всем в верхнем регистре.

Я пытался добавить.ExposeConfiguration (cfg => cfg. SetProperty ("hbm2ddl.keywords", "автокавычка"), но это, кажется, ничего не делает.

9
задан Nathan W 27 July 2010 в 23:08
поделиться

2 ответа

Поскольку hbm2ddl.keywords должен сделать это за вас, а он не работает, я предлагаю вам загрузить исходный код nhibernate и отладить его с вашим проектом.

Вероятно, вы можете начать с точки останова в строке 171 SessionFactoryImpl.cs

if (settings.IsAutoQuoteEnabled)

Взгляните на метод public static void QuoteTableAndColumns (конфигурация конфигурации) на SchemaMetadataUpdater.cs

Надеюсь, что это поможет.

3
ответ дан 4 December 2019 в 21:47
поделиться

Не используйте символы верхнего регистра в именах таблиц / столбцов. Это решит эту проблему и сделает специальные запросы менее болезненными, поскольку вам не придется постоянно их цитировать.

2
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: