首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >具有独立于数据库的实体框架核心的文件备份/还原

具有独立于数据库的实体框架核心的文件备份/还原
EN

Stack Overflow用户
提问于 2020-01-29 14:57:02
回答 1查看 381关注 0票数 0

在我当前的应用程序中,所有数据都使用实体框架存储在数据库中。

现在,我希望在基础数据库的不可知论的应用程序中实现“导出/备份到文件”的功能和相应的“从文件导入/还原”功能,而不是使用数据库的备份/还原方法。

还原应该将数据恢复到备份之前的状态,因此在备份之后的更改应该被丢弃。

它分为以下几个部分进行备份:

从database

  • serialize对象加载所有实体(从根实体到子实体)到字符串

  • ,将此字符串写入文件

并为恢复:

file

  • deserialize

  • 将文件内容读取到objects
  • remove中database
  • write中的所有现有实体所有实体到数据库

备份部分主要是通过使用本文的代码(https://stackoverflow.com/a/49597502/226278)和使用JSON.net来序列化结果数据来完成的:

代码语言:javascript
代码运行次数:0
运行
复制
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

还完成了大部分恢复工作:

代码语言:javascript
代码运行次数:0
运行
复制
// read string from file
var data = JsonConvert.DeserializeObject<List<Blog>>(stringFromFile, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
_context.AddRange(data);
_context.SaveChanges();

我正在挣扎的是在恢复所有实体之前对数据库进行清理。什么是最好的,最EF的核心方式来做这件事?

而且,这应该独立于底层数据库,因此任何解决方案(包括ExecuteSqlCommand() )都可能不是我想要的。

EN

回答 1

Stack Overflow用户

发布于 2020-01-29 15:19:35

您可以重命名旧数据库并以一个新模式开始将数据插入到其中吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59969801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档