NHibernate GenericADOException - PullRequest
       0

NHibernate GenericADOException

0 голосов
/ 11 июля 2011

sesion.Get (ID);иногда выдает GenericADOException:

не удалось загрузить объект: [PFC __ Servidor.Entidades.Usuario # 10] [SQL: ВЫБРАТЬ usuario0 .us_id как us1_1_0_, usuario0_.us_email как us2_1_0_u, us.us_contrasena as us3_1_0_ ОТ public.usuario usuario0_ ГДЕ usuario0_.us_id =?]

Кто-нибудь знает, в чем проблема?Почему не всегда происходит сбой?

PD: Извините за мой английский.

ACT1: Внутреннее исключение: [System.NullReferenceException] "Ссылка на объект не установлена ​​для экземпляра объекта"

Ответы [ 3 ]

0 голосов
/ 11 июля 2011

иногда

Ваш сеанс разделен между потоками? Если это так, смерть. Сессии не являются потокобезопасными.

0 голосов
/ 12 июля 2011

У меня была эта проблема, когда я начал внедрять текущую платформу.На самом деле, как предлагает Джейсон, вам нужно установить область действия сеанса NHibernate для каждого запроса.Это означает, что новый сеанс будет открыт для каждого запроса и закрыт в конце запроса.Тем не менее, вы создаете фабрику сеансов только один раз для каждого запуска приложения, так как это самая дорогая часть.

Используете ли вы какое-либо внедрение зависимостей?Вы можете найти замечательные примеры того, как достичь определения объема сеансов по запросу в Виндзорский замок NHibernate .

Однако, если вы делаете это вручную, вы можете открыть сеанс NHibernate в своем Global.asax Request_begin и убедитесь, что он закрыт и расположен в методе Request_End.

Удобный способ работы с NHIbernate:

  • Castle Windsor (внедрение зависимостей)
  • Репозиторийшаблон (разделить ваш доступ к данным)
  • Единица работы шаблона.Вместо внедрения сеанса nhibernate вы вводите правильный сервис и единицу работы в сервисы
  • Сервисный уровень (бизнес-логика) - то, что вы вызываете из своих контроллеров или уровня представления приложений
0 голосов
/ 11 июля 2011

Можете ли вы опубликовать innerException?

  • Вы уверены, что ваша строка подключения правильно сформирована?
  • Вы уверены, что ваша база данных была создана?
  • Вы уверены, что файл сопоставления указывает на правильное имя таблицы?
  • Вы уверены, что экземпляр вашей базы данных работает?

обновление

Я также нашел это:

Не удалось загрузить объект, когда таблица существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...