Мой DatabaseContext имеет:
string physicalPath = "Filename = " + Path.Combine(Path.Combine(Directory.GetCurrentDirectory(), "Data"), "Database.db");
optionsBuilder.UseSqlite(physicalPath);
Мой Startup имеет:
using (var client = new DatabaseContext())
{
client.Database.EnsureCreated();
}
Он отлично работает с "D:\\Database.db", но он не очень переносим, поэтому мне нужно использовать его собственные каталоги.
Кто-нибудь знает?
Обновлять: Я попробовал еще раз с учебником здесь и получил ту же ошибку на странице исключения.
"An unhandled exception occurred while processing the request. SqliteException: SQLite Error 14: 'unable to open database file'. Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(int rc, sqlite3 db)"
Обновление: я получаю сообщение «System.UnauthorizedAccessException: доступ к пути C:\Program Files\IIS Express\test.txt запрещен» при попытке
string path = Path.Combine(Directory.GetCurrentDirectory(), "test.txt");
using (FileStream fs = File.Create(path)) { Byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file."); // Add some information to the file. fs.Write(info, 0, info.Length); }





Как насчет использования следующего для построения пути, указывающего на ваш файл БД?:
// Gets the current path (executing assembly)
string currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// Your DB filename
string dbFileName = "stuff.db";
// Creates a full path that contains your DB file
string absolutePath = Path.Combine(currentPath, dbFileName);
Обратите внимание, что вам нужно будет включить следующие операторы using в ваш DatabaseContext:
using System.IO;
using System.Reflection;
Вам нужно поместить базу данных в папку Данные приложения. Все требуемые SQLite dll должны находиться в папке мусорное ведро. Также SQLite.Interop.dll должен находиться в папке х64 и х86 под bin.
обратите внимание, что это заканчивается поиском базы данных в папке bin