是否可以将Sqlite DbContext的内容写入其他文件

时间:2018-12-30 20:01:08

标签: entity-framework-core system.data.sqlite

是否可以在不创建新的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;

有更好的方法吗?

0 个答案:

没有答案