Я испытываю странное поведение при попытке протестировать проект на машине, отличной от моей машины разработки. Все работает отлично на машине разработки, но при развертывании программы я получаю «Ошибка при открытии DbConnection». с InnerException «Невозможно открыть файл базы данных».Проблемы с подключением SQLite
В принципе, у меня есть пустая база данных (только схема) в той же папке, что и файл exe, и, как я уже сказал, все работает отлично на машине разработки. Я использую LinqConnect для запроса базы данных SQLite. Вот метод, который имеет ошибку (также получает ту же ошибку с любыми методами, которые обращаются к базе данных).
private void LoadAccountsFromDatabase()
{
var accounts = new ObservableCollection<Account>();
var connectionString =
string.Format("Data Source='{0}';Version=3;Default Command Timeout=10000;", UserPreferences.DatabasePath);
AccountsGrid.CommitEdit();
AccountsGrid.SelectedItem = null;
MessageBox.Show(connectionString);
try
{
using (var db = new MainDataContext(connectionString))
{
MessageBox.Show("step 4.5");
var query = from a in db.Accounts
where a.Inactive == 0 || a.Inactive == null || ShowInactiveCheckBox.IsChecked == true
orderby a.AccountName, a.AccountNickname
select a;
try
{
MessageBox.Show("step 4.6");
if (query.Any())
{
MessageBox.Show("step 4.61");
foreach (var item in query)
{
MessageBox.Show("step 4.65");
accounts.Add(item);
}
}
MessageBox.Show("step 4.7");
AccountsGrid.ItemsSource = accounts;
MessageBox.Show("step 4.8");
}
catch (Exception e)
{
MessageBox.Show("accounts add " + e.Message);
if (e.InnerException != null)
{
MessageBox.Show(e.InnerException.Message);
}
}
}
}
catch (Exception e)
{
MessageBox.Show("load accounts " + e.Message);
}
}
Я получаю сообщение «шаг 4.6», а затем исключение. Я не вижу «шаг 4.61», поэтому кажется, что ошибка находится в строке if (query.Any())
, что является странным, поскольку базовые таблицы пустые, поэтому результатов нет. У кого-нибудь есть идеи, что может быть проблемой здесь? У меня есть файлы DLL LinqConnect, которые развертываются с exe, а также sqlite3.dll, так что это не должно быть проблемой.