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" может быть вероятным виновником, но без дополнительной информации о вашей ошибке его немного сложно отследить. Некоторые предложения:
- попробуйте переименовать таблицу и столбцы как в базе данных, так и в конфигурации и дать ему тест
- скачать такой как 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");
Я просто попал в эту проблему. Я закончил тем, что сделал это:
который является изменением кода на NHibernate, но работал для меня.