Я обнаружил SubSonic этим вечером, и, немного поиграв с ним и версиями MySQL Connector, я наконец-то получил его, чтобы принять строку подключения, настраивающую простой репозиторий.
Итак, я создал простой класс и поехал в город, добавив в него некоторые данные, затем создал репозиторий и попытался сохранить запись.
Все, что я могу из этого вывести, это нулевые ошибки исключения, когда я звоню:
repo.Add (пользователь);
Не знаю, что такое null, а ошибка не очень ясна.
В какой-то момент я изменил тип своего поля идентификатора в своем классе User на long и получил еще одну ошибку от SubSonic (сказав, что он не может определить, какое поле было моим идентификатором, сказал мне назвать его ID или поставить на него тег, но он уже назывался ID)
Я поместил данные в каждое поле класса, даже те, которые не требуются для каждой базы данных, но ничего.
Остаток вечера я потратил на поиски информации о своей ошибке, но не повезло, и документация на сайте никуда меня не привела.
Есть идеи, что я делаю не так или как я мог это диагностировать?
Заранее спасибо за любую помощь ...
Вот подробности исключения
Исключение System.NullReferenceException было обработано
Сообщение = ссылка на объект не установлена для экземпляра объекта.
Источник = MySql.Data
Трассировки стека:
в MySql.Data.MySqlClient.MySqlConnection.get_ServerThread ()
в MySql.Data.MySqlClient.MySqlConnection.Abort ()
в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader (поведение CommandBehavior)
в MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader (поведение CommandBehavior)
в System.Data.Common.DbCommand.ExecuteReader (поведение CommandBehavior)
в SubSonic.DataProviders.DbDataProvider.ExecuteReader (QueryCommand qry)
в SubSonic.Query.Insert.ExecuteReader ()
в SubSonic.Repository.SimpleRepository.Add [T] (T item)
в gc_ss.Program.Main (String [] args) в C: \ Users \ Michaelm \ Desktop \ Subsonic_Demo \ gc_ss \ gc_ss \ Program.cs: строка 27
в System.AppDomain._nExecuteAssembly (сборка сборки, аргументы String [])
в System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly ()
в System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта)
в System.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта)
в System.Threading.ThreadHelper.ThreadStart ()
InnerException:
Другое обновление
Я замечаю, что если я изменю класс (User) и изменю одно из свойств, изменения этого свойства будут отражены в базе данных. Также, если я урону стол, он будет построен на основе моего класса. Итак, часть миграции работает, после этого что-то происходит.
Окончательное обновление
Хорошо, я удалил таблицу и изменил класс, чтобы использовать long в качестве поля ID. Установите RunMigrations и снова запустите, и это не удалось из-за отсутствия значения по умолчанию для ID. Я установил в MySQL столбец AutoIncrement, и теперь все работает нормально. Не уверен, чем он отличается от того, чтобы установить для него значение long вчера (если только изменения не были применены так, как я думал).
Во всяком случае, так что я думаю, что этот вопрос закрыт ...