使用EF Core

我正在为一个新项目做一些研究,我试图确定是否有可能(建议)将SQLite数据库加载到内存中,对它执行CRUD操作,然后再将其持久保存。

我已经看到了许多利用SQLite数据库(在内存中)进行单元测试的示例,在所有这些示例中,数据只是最后被废弃了-这不是我想要做的。

我可能会使用microsoft SQL Server来管理整个站点数据并充当存储引擎(用户和凭据及其关联的SQLite数据库等)。

当用户在UI中选择SQLite数据库时,我想将其加载到服务器的内存中,允许用户对其进行操作,然后将其持久化回存储引擎(SQL Server),而无需执行以下操作:将.db文件保存到文件系统。

我对EF Core + SQL Server和SQLite(针对文件系统)的方面很满意。但是对我来说,新的想法是针对内存中的SQLite数据库进行操作。

所以我的问题是:

  • EF Core是否可能?
  • 如果是这样,我将如何配置我的SQLite DbContext类来实现此目的?
  • 这有什么重大缺点吗?

谢谢

xsj21 回答:使用EF Core

  

EF Core是否可以实现?

是的。为什么不? SQLite本质上将内存数据库与其他任何数据库一样对待。有particular considerations,但是您基本上以相同的方式插入和查询数据。

  

如果是这样,我将如何配置我的SQLite DbContext类来实现此目的?

再次,请参考documentation。您需要提供一个特定的连接字符串。 (不劝阻SO问题,但是如果您要研究和测试此问题,那么您真的应该研究sqlite.org上可用的信息。它具有非常详尽的文档,至少与许多开源项目相比……有时有点分散,但仍然可以访问。)

也许实际上比指定适当的连接字符串还要复杂,这实际上是将现有的数据库文件加载到内存中。默认的基本行为是仅在内存中创建一个空数据库。加载数据的方式有多种,this question有一些有用的答案。

  

这有什么主要缺点吗?

您显然已经发现了一些缺点,但可能不超过需要合并/同步数据库的任何项目。这个问题没有简短的答案,对于Stack Overflow来说,答案太宽泛了。

您特别提到了将数据同步到SQL Server而不将数据保存到磁盘文件中。当然,您将必须从sqlite执行一系列查询,将数据整理到SQL Server的相应更新语句中,然后在服务器上执行。也许有第三方工具可以对基于文件的数据库执行相同的操作,但是我怀疑您还是要对光盘文件执行相同的操作。

本文链接:https://www.f2er.com/3100444.html

大家都在问