CastleProject ActiveRecord и проблема SQLite XP-only - PullRequest
1 голос
/ 13 сентября 2010

Я написал отдельное приложение Windows Forms в Visual Studio 2005, используя C #, CastleProject ActiveRecord и SQLite в качестве базы данных (используя соединитель SQLite).

Опубликованное приложение (двоичные файлы из каталога bin) отлично работает на компьютерах с Windows Vista и Windows 7, однако при копировании на компьютер с Windows XP приложение выдает ошибку где-то при запуске:

"Не удалось выполнить FindByPrimaryKey для [tablename] Id: 422"

Самое странное, что идентификатор 422 существует, как и таблицы и база данных (и несоответствия не обнаружены).

Некоторые другие детали:

  • В системе Windows XP SP3 установлены все библиотеки / фреймворки
  • Приложение нормально запускается на компьютере xp
  • Если приложение запускается в visual studio на компьютере с XP, программа работает без проблем. Но запуск его за пределами Visual Studio (тот же двоичный файл) снова выдает ошибку.
  • Нет проблем на Vista & W7
  • Я использую последний соединитель SQLite (http://sourceforge.net/projects/sqlite-dotnet2/)
  • Когда я копирую файл базы данных SQLite с компьютера с XP на Vista или W7, приложение в этих системах считывает его без проблем
  • Ошибка не отображается во всех других действиях базы данных, которые имели место до ошибочного вызова
  • Изменение FindByPrimaryKey на FindAll приведет к аналогичной ошибке

Понятия не имею, что может быть причиной ... У кого-нибудь есть идея?

Обновление:

Хорошо, обнаружил проблему (все еще очень странно, но это может быть потому, что я использую ее неправильно):

В app.config в строке, где определено местоположение базы данных:

<add key="hibernate.connection.connection_string" value="Data Source=database.db;Version=3"/>

В XP путь (в источнике данных) указывается относительно любого другого пути действия с файлом, в то время как в Windows Vista или Windows 7 он всегда указывается относительно пути основного исполняемого файла.

Так что .. другой вопрос, но та же проблема:

Как определить путь к базе данных, чтобы он всегда указывал на одно и то же местоположение? (например: тот же каталог, что и исполняемый файл, и, разумеется, без абсолютных путей)

Обновление 2

Хорошо, понял, из официальной документации проекта замка:

http://www.castleproject.org/activerecord/documentation/v1rc1/usersguide/configref.html#configuring

...