【发布时间】:2019-11-16 08:35:10
【问题描述】:
我正在为一个新项目做一些研究,我正在尝试确定是否可以(并且建议)将 SQLite 数据库加载到内存中,对其执行 CRUD 操作,并将其持久化。
我见过很多使用 SQLite 数据库(在内存中)进行单元测试的例子,在所有这些例子中,数据最终都被丢弃了——这不是我想要做的。
我可能会使用 Microsoft SQL Server 来管理整个站点数据并充当存储引擎(用户和凭据及其关联的 SQLite 数据库等)。
当用户在 UI 中选择 SQLite 数据库时,我想将其加载到服务器上的内存中,允许用户对其进行操作,然后将其持久化回存储引擎(SQL Server)而无需将 .db 文件保存到文件系统。
我对 EF Core + SQL Server 和 SQLite(针对文件系统)的各个方面感到满意。但对我而言,新的想法是针对内存中的 SQLite 数据库进行操作。
所以我的问题是:
- EF Core 可以做到这一点吗?
- 如果是这样,我将如何配置我的 SQLite
DbContext类来完成此操作? - 这有什么主要缺点吗?
谢谢
【问题讨论】:
-
如果对内存中的数据库副本进行操作,如果其他用户正在修改现有的数据库(SQL Server)实例怎么办?用户可能会得到脏数据。
-
@RyanWilson 谢谢你,好点,我肯定会注意到像这样的设计的“主要缺点”。用户将拥有他们的数据库(因此多个用户编辑一个数据库不是问题) - 但是由单个用户打开多个 UI 仍然是一个问题。这个项目现在正在研究中,我正在尝试权衡这种方法的利弊。再次感谢!
-
没问题。很高兴我能给你一些东西来看看。让我知道进展如何,我想听听项目的进展情况。
标签: c# entity-framework sqlite .net-core ef-core-3.0