在我当前的应用程序中,所有数据都使用实体框架存储在数据库中。
现在,我希望在基础数据库的不可知论的应用程序中实现“导出/备份到文件”的功能和相应的“从文件导入/还原”功能,而不是使用数据库的备份/还原方法。
还原应该将数据恢复到备份之前的状态,因此在备份之后的更改应该被丢弃。
它分为以下几个部分进行备份:
从database
并为恢复:
file
备份部分主要是通过使用本文的代码(https://stackoverflow.com/a/49597502/226278)和使用JSON.net来序列化结果数据来完成的:
var data = db.Set<Blog>().Include(db.GetIncludePaths(typeof(Blog))).ToList(); // both Include() and GetIncludePaths() from https://stackoverflow.com/a/49597502/226278
var stringToFile = JsonConvert.SerializeObject(data, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
// write string to file
还完成了大部分恢复工作:
// read string from file
var data = JsonConvert.DeserializeObject<List<Blog>>(stringFromFile, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
_context.AddRange(data);
_context.SaveChanges();
我正在挣扎的是在恢复所有实体之前对数据库进行清理。什么是最好的,最EF的核心方式来做这件事?
而且,这应该独立于底层数据库,因此任何解决方案(包括ExecuteSqlCommand()
)都可能不是我想要的。
发布于 2020-01-29 07:19:35
您可以重命名旧数据库并以一个新模式开始将数据插入到其中吗?
https://stackoverflow.com/questions/59969801
复制相似问题