Я написал отдельное приложение 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