是否可以在不创建新的DbContext的情况下将SQLite DbContext的当前内容写入另一个文件(即更改连接字符串)?
如果我尝试下面的代码,则在设置ConnectionString时,DBContext会丢失其当前状态。
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;
有更好的方法吗?