Castle-ActiveRecord Учебник с .NET 3.5 не работает? - PullRequest
1 голос
/ 25 сентября 2008

Кто-нибудь пробовал 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 выглядит потрясающе ..

Ответы [ 3 ]

1 голос
/ 25 сентября 2008

Часть ключа hibernate была удалена в NHibernate версии 2.0. Эта версия подходит для NHibernate 2.0 и выше:

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

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

Забавно, что по крайней мере НЕКОТОРЫЕ из быстрого старта были обновлены до текущей с NHibernate (NH) 2.0, но последний «правильный» релиз Castle все еще 1.0 1.0 (почти год назад), который не включает NH 2,0.

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

1 голос
/ 25 сентября 2008

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

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

Если вы еще больше упустите ошибку, которую она выдает, скорее всего, в ней есть некоторые подробности относительно того, что с ошибкой «Опубликовать».

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

  • У класса нет атрибута [ActiveRecord].
  • Нет свойства с атрибутом [PrimaryKey].
  • Нет соответствующей таблицы, называемой «Post» (или «Posts», если PluralizeTableNames «true»).
  • Нет соответствующих столбцов для приписанных свойств.
  • Ваши приписанные свойства и публичные методы не virtual (этот убивает меня все время).
0 голосов
/ 25 сентября 2008

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

...