MySQL & NHibernate. Как исправить ошибку: столбец "ReservedWord" не принадлежит таблице ReservedWords?

" Я получаю странную ошибку при использовании NHibernate. И я не знаю, что вызывает эту ошибку. Я новичок во всей Visual Studio и NHibernate, но не в спящем режиме. Я использовал Hibernate в прошлом в проектах Java.

любая помощь будет оценили, указывая мне, где моя ошибка.

Я использую Visual Studio 2008 SP1 с Mysql 5.1.

ниже код я использую. "

полный код и примеры размещены здесь: https://forum.hibernate.org/viewtopic.php?f=25&t=997701

6 ответов


мое первое предположение, что NHibernate идентифицирует столбец и / или имя таблицы как зарезервированное слово. Ваш класс с именем "hibernate" может быть вероятным виновником, но без дополнительной информации о вашей ошибке его немного сложно отследить. Некоторые предложения:

  1. попробуйте переименовать таблицу и столбцы как в базе данных, так и в конфигурации и дать ему тест
  2. скачать такой как log4net (http://logging.apache.org/log4net/download.html) и проверить https://www.hibernate.org/364.html чтобы настроить его для nhibernate. Установите его для отладки и копаться в файле журнала и увидеть полную информацию о stacktrace/error вы получаете.

FYI для любых новичков NHibernate / Fluent NHibernate, таких как я, решение FCastellanos также работало для меня (я также получил ошибку в Windows), и способ Fluent NHibernate добавить эту конфигурацию:

Fluently.Configure()
    ...
    .ExposeConfiguration(c => c.Properties.Add("hbm2ddl.keywords", "none"))
    ...
    .BuildSessionFactory()

Я получил ту же ошибку, но я использую MySQL+NHibernate (2.1.0 GA) + Mono (2.4) под Ubuntu, и эта ссылка помогла мне, надеюсь, она работает для вас.

ключ должен использовать это в session-factory

<property name="hbm2ddl.keywords">none</property>

https://forum.hibernate.org/viewtopic.php?f=25&t=997701

что это было :)


это разрешает ту же ошибку при использовании ActiveRecord для NHibernate. Соответствующий бит-key= " hbm2ddl.ключевые слова "value=" none " и это идет в вашем интернете.конфиг.

<activerecord isWeb="true">
    <config>
        <add key="connection.driver_class" value="NHibernate.Driver.MySqlDataDriver"/>
        <add key="dialect" value="NHibernate.Dialect.MySQLDialect"/>
        <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <add key="connection.connection_string_name" value="BrochureDb"/>
        <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>
        <add key="hbm2ddl.keywords" value="none" />
    </config>
</activerecord>

Если вы делаете это программно, вы должны сделать это так:

cfg.SetProperty(NHibernate.Cfg.Environment.Hbm2ddlKeyWords, "none");

Я просто попал в эту проблему. Я закончил тем, что сделал это:

http://orbitalcoder.wordpress.com/2009/08/18/proposed-solution-for-the-nhibernate-exception-column-reserved-word-does-not-belong-to-table-reservedwords/

который является изменением кода на NHibernate, но работал для меня.