Можно ли записать текущее содержимое SQLite DbContext в другой файл (т.е. изменить строку подключения) без создания нового DbContext?
Если я попробую приведенный ниже код, DBContext потеряет свой текущийсостояние, когда установлена ConnectionString.
var dbConn = _dbContext.Database.GetDbConnection();
dbConn.Close();
dbConn.ConnectionString = "Filename=temp.dB";
_dbContext.Database.OpenConnection();
Я также заметил, что в System.Data.SQLite есть метод ChangeDatabase (), но он не реализован.
В настоящее время я делаю следующее:
string dbPath = Path.Combine(Environment.CurrentDirectory, "untitled.db");
string connString = string.Format("Data Source={0}", dbPath);
using (var source = new SQLiteConnection(connString))
using (var destination = new SQLiteConnection("Data Source=backup.db; Version=3;"))
{
source.Open();
destination.Open();
source.BackupDatabase(destination, "main", "main", -1, null, 0);
}
var builderOptions = new DbContextOptionsBuilder<AppDbContext>()
.UseSqlite("Filename=backup.dB")
.EnableSensitiveDataLogging()
.Options;
var context = new AppDbContext(builderOptions);
_unityContainer.RegisterInstance(context);
_dbContext = context;
Есть ли лучший способ сделать это?