【问题标题】:Store data from database to local using entity framework 6使用实体框架6将数据从数据库存储到本地
【发布时间】:2015-04-24 11:16:36
【问题描述】:

我有数据存储在 MySQL 数据库中,我通过实体框架 6 访问它。我想做的是提取数据并以独立于服务器的方式存储它,以便我可以在引导更大数据库的未来(来自 MySQL 的数据只是其中的一小部分)。目标数据库不是 MySQL。

MySQL 数据之前在那里,所以我使用 Database First。对于新数据库,我使用 Code First。 MySQL 数据也需要一些清理,这在代码中完成。所以工作流程是:

  1. 首先使用 Entity Framework 数据库从 MySQL 读取数据
  2. 在代码中优化/增强/纠正它
  3. 先使用代码存储在另一个数据库中

所以我的第一个想法是使用 SQLite,但遗憾的是,Code First is not supported

使用其他格式(即 XML/DataSets/CSV)来存储数据需要我重新实现导入代码。

现在我没有找到另一个支持实体框架的嵌入式数据库。由于实体框架适用于关系数据库,我会说 Redis(或其他 NoSQL 数据库)无法解决问题。

我还认为,如果使用 IKVM.NET “转换”H2,然后使用 H2 作为 SQLite 替代品是一种选择——但由于 IKVM.NET 不支持某些内部依赖性,这可能会失败。

所以我很高兴得到以下问题的答案:

  1. H2 方式会起作用吗?是否有稳定/有效的 ADO.NET 提供程序?
  2. 我不太关心本地存储格式(也可以是 JSON 等)——有什么不是 SQL,而是提供 Enitity Framework 支持?
  3. 我错过了什么吗?有没有我还没有看到的方法?

以下是我偶然发现的一些相关问题,这些问题涉及使用实体框架来使用文件的可能性:

【问题讨论】:

  • 您真的需要 EF 为您创建数据库表吗?手动创建数据库表会不会有太大的负担?大多数定义可能需要对 MySQL 版本进行细微更改。之后,您可以使用 Code First 方法。据我所知,SQLite 驱动程序唯一缺少的是基于代码创建数据库表。
  • 是和不是。我正在寻找“最少工作”的解决方案。如果我自己创建创建语句,我还有额外的工作。目前我正在检查“从 DB 导出到 XML 并手动填充目标上下文”方法。这也是一项额外的工作,但给我带来了好处,即可以轻松修改 XML 文件(即更正拼写错误)。

标签: c# mysql database sqlite entity-framework-6


【解决方案1】:

没有完整的解决方案,但有很多现成的零件:

本项目在IKVM.Net之后包装了H2的编译Jar 使用实现 ADO.Net 接口的类 允许在 .Net 项目中轻松使用:
https://code.google.com/p/h2sharp/

用于 SharpHSQL 的 EF 提供程序(不起作用,因为 SharpHSQL 太旧了,它是 Hypersonic 1.4 的端口):
https://github.com/ArsenShnurkov/SharpHSQL/tree/master/src/SharpHsql.Linq

这里是构建过程的描述:
https://groups.google.com/forum/#!topic/h2-database/QAvFqbyd4_0
https://code.google.com/p/h2sharp/wiki/BuildingH2Sharp

以上代码的作者写了这么多的代码做得很好,所以我认为再写一些来完成你的任务并没有错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2014-02-12
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多