Ошибка сохранения NHibernate с базой данных - PullRequest
0 голосов
/ 22 апреля 2009

Я звоню Сохранить на объекте NHibernate, который имеет много детей прикреплен к нему. При сохранении иногда возникает ошибка, когда NHibernate начинает вставлять в мою базу данных SQL («Данные были усечены во время преобразование из одного типа данных в другой. "Например). верхние строки примера исключения. NHibernate никогда не говорит мне больше, чем просто ... это не удалось. У меня вопрос, как мне определить, какая таблица / столбец является виновником в моей ошибке сохранения?

в System.Data.SqlServerCe.SqlCeCommand.ProcessResults (Int32 ч) в System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText (IntPtr & pCursor, Boolean & isBaseTableCursor) в System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand (Поведение CommandBehavior, метод String, параметры ResultSetOptions) в System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery () в NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery (IDbCommand CMD) в NHibernate.Id.Insert.AbstractSelectingDelegate.PerformInsert (SqlCommandInfo insertSQL, сеанс ISessionImplementor, IBinder связующее) в NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] поля, логическое значение [] notNull, SqlCommandInfo sql, объект obj, ISessionImplementor session) в NHibernate.Persister.Entity.AbstractEntityPersister.Insert (Object [] поля, объектный объект, сеанс ISessionImplementor) в NHibernate.Action.EntityIdentityInsertAction.Execute ()

1 Ответ

1 голос
/ 22 апреля 2009

Проблема в том, что ошибка происходит в библиотеке SqlServerCe. Так что NHibernate не может сказать вам, что не так.

Скорее всего, вы выбрали тип данных в файле отображения, который не совпадает в базе данных (например, у вас есть номер в модели и varchar в базе данных). База данных выполняет неявное приведение, и в случае сбоя вы получаете эту ошибку.

Вы можете найти его по:

  • наблюдаем значения в отладчике и пытаемся найти значение, которое больше обычного
  • чтение файла сопоставления и объявлений классов и сравнение его с вашей моделью базы данных
  • экспорт модели с использованием SchemaExport и сравнение экспортированной модели с вашей.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...