Я работаю с устаревшей базой данных и пытаюсь преобразовать символ в int для сопоставления много-к-одному. Я знаю, что это не отличная идея, но я придерживаюсь схемы, какой она есть.Формула много-к-одному имеет имя таблицы, добавленную к ключевому слову SQL
Я попытался сделать это со следующим отображением, но обнаружил, что NHibernate добавляет псевдоним имени таблицы к ключевому слову SQL_INTEGER
.
<many-to-one name="host" formula="CONVERT(alloc_code, SQL_INTEGER)" />
генерирует SQL
CONVERT(hostplacem0_.alloc_code, hostplacem0_.SQL_INTEGER)
Я нашел this пост, но решение не выполнимо один для моей ситуации.
Следует отметить, что мы применили наш собственный диалект для используемой СУБД (Sybase Advantage Database Server), поскольку NHibernate не поддерживает ее из коробки. Поэтому у меня есть возможность изменить это, чтобы решить эту проблему. Я уже пробовал регистрировать SQL_INTEGER
как ключевое слово, но это не помогло.
Случайные мысли, но вы можете попробовать зарегистрироваться в одном и том же диалекте, см. Https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/Dialect/MsSql2000Dialect.cs например , Объявление str кажется интересным – jbl
Спасибо за предложение @jbl. Оказывается, это вопрос чувствительности к регистру. См. Мой ответ ниже. – mickfold
thx для последующего наблюдения – jbl