【发布时间】:2015-04-24 11:16:36
【问题描述】:
我有数据存储在 MySQL 数据库中,我通过实体框架 6 访问它。我想做的是提取数据并以独立于服务器的方式存储它,以便我可以在引导更大数据库的未来(来自 MySQL 的数据只是其中的一小部分)。目标数据库不是 MySQL。
MySQL 数据之前在那里,所以我使用 Database First。对于新数据库,我使用 Code First。 MySQL 数据也需要一些清理,这在代码中完成。所以工作流程是:
- 首先使用 Entity Framework 数据库从 MySQL 读取数据
- 在代码中优化/增强/纠正它
- 先使用代码存储在另一个数据库中
所以我的第一个想法是使用 SQLite,但遗憾的是,Code First is not supported。
使用其他格式(即 XML/DataSets/CSV)来存储数据需要我重新实现导入代码。
现在我没有找到另一个支持实体框架的嵌入式数据库。由于实体框架适用于关系数据库,我会说 Redis(或其他 NoSQL 数据库)无法解决问题。
我还认为,如果使用 IKVM.NET “转换”H2,然后使用 H2 作为 SQLite 替代品是一种选择——但由于 IKVM.NET 不支持某些内部依赖性,这可能会失败。
所以我很高兴得到以下问题的答案:
- H2 方式会起作用吗?是否有稳定/有效的 ADO.NET 提供程序?
- 我不太关心本地存储格式(也可以是 JSON 等)——有什么不是 SQL,而是提供 Enitity Framework 支持?
- 我错过了什么吗?有没有我还没有看到的方法?
以下是我偶然发现的一些相关问题,这些问题涉及使用实体框架来使用文件的可能性:
【问题讨论】:
-
您真的需要 EF 为您创建数据库表吗?手动创建数据库表会不会有太大的负担?大多数定义可能需要对 MySQL 版本进行细微更改。之后,您可以使用 Code First 方法。据我所知,SQLite 驱动程序唯一缺少的是基于代码创建数据库表。
-
是和不是。我正在寻找“最少工作”的解决方案。如果我自己创建创建语句,我还有额外的工作。目前我正在检查“从 DB 导出到 XML 并手动填充目标上下文”方法。这也是一项额外的工作,但给我带来了好处,即可以轻松修改 XML 文件(即更正拼写错误)。
标签: c# mysql database sqlite entity-framework-6