Можно ли записать содержимое Sqlite DbContext в другой файл - PullRequest
0 голосов
/ 30 декабря 2018

Можно ли записать текущее содержимое 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;

Есть ли лучший способ сделать это?

...