Вопрос

Кто-нибудь пробовал ActiveRecord Вступительный образец с C # 3.5?У меня почему-то такое ощущение, что образец совершенно неправильный или просто устарел.Конфигурация XML просто неправильная:

<add key="connection.connection_string" value="xxx" />

должно быть :

<add key="hibernate.connection.connection_string" value="xxx" />

(если я правильно понимаю синтаксис конфигурации nhibernate ..)

Мне интересно, что я делаю не так.Я получаю исключение "Не удалось выполнить ExecuteQuery для пользователя" при вызове Count() в пользовательской модели.

Понятия не имею, что это может быть.Исходный код учебника сильно отличается от исходного кода на странице (особенно в конфигурации XML), и это образец VS2003 с другим синтаксисом для большинства вещей (без обобщений и т.д.).

Есть какие-нибудь предложения?ActiveRecord выглядит потрясающе..

Это было полезно?

Решение

(Это было слишком длинно для поста с комментарием)

[@Tigraine] Из ваших комментариев к моему предыдущему ответу похоже, что ошибка связана не с конфигурацией, а с одной из ваших сущностей.Удаление "гибернации" исправило конфигурацию, так что это привело к реальной ошибке, которая, по-видимому, заключается в том, что объект "Post" неправильно приписан ActiveRecord для создания его сопоставления.

Если вы углубитесь в ошибку, которую она выдает, в ней, вероятно, есть некоторые подробности о том, что произошло с ошибкой "Post".

Некоторые общие вещи включают в себя:

  • Класс не имеет [ActiveRecord] атрибут.
  • Нет никакой собственности с [PrimaryKey] атрибут.
  • Нет соответствующей таблицы с названием "Post" (или "Сообщения", если PluralizeTableNames является "истинным").
  • Для приписываемых свойств нет соответствующих столбцов.
  • Ваши приписываемые свойства и общедоступные методы не являются virtual (это все время меня убивает).

Другие советы

Часть ключа "гибернации" была удалена в NHibernate версии 2.0.Эта версия верна для NHibernate 2.0 и более поздних версий:

<add key="connection.connection_string" value="xxx" />

Редактировать:Я вижу, что quickstart не поставляется с двоичными файлами для Castle и NHibernate.Должно быть, вы откуда-то скачали двоичные файлы;было бы полезно, если бы вы указали номер версии вашего файла NHibernate.dll.

Как ни странно, по крайней мере, ЧАСТЬ quickstart была обновлена до версии NHibernate (NH) 2.0, но последней "правильной" версией Castle по-прежнему является 1.0 RC3 (почти год назад), которая не включает NH 2.0.

Вы можете пойти двумя путями.Вы можете продолжать использовать Castle RC3, и в этом случае вам действительно нужно будет добавить префикс 'hibernate' к вашим записям конфигурации.Или вы можете скачать строить замка от багажника, который должен работать в соответствии с NH 2.0.Проблема с последним подходом заключается в том, что некоторые другие критические изменения, внесенные в NH 2.0, могут не быть исправлены при быстром запуске.

Удалить "hibernate." часть для всех записей конфигурации.Ваш первый пример является правильным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top