【问题标题】:Sandbox Sqlite with EF Core带有 EF Core 的沙盒 Sqlite
【发布时间】:2018-10-17 02:42:00
【问题描述】:

我正在制作一个小型网络应用程序,目前正在使用 sqlite + EF Core 2.1 来存储数据。 有什么解决方案可以沙箱化我的 sqlite 数据库文件

我的意思是将我的 sqlite 数据库及其 datatriggers 从我的物理 db 文件加载到内存中.

每当我打开/关闭 VS 调试器时,数据库将使用物理文件中的现有数据刷新

谢谢,

【问题讨论】:

  • 你能定义sandbox吗?
  • 如果这意味着保护并且您拥有 > 一个客户端,那么您不应该使用 sqlite。
  • 它只是一个小型网络应用,仅供某些人使用,因此,我选择了sqlite。
  • 这么多客户?即 > 1 台客户端机器?
  • 我认为这不是重点,因为我的应用程序处于开发阶段,因此我和我的团队成员可以使用sqlite 来进行 api 测试。 :)

标签: c# sqlite entity-framework-core ef-core-2.1


【解决方案1】:

这里有一些代码可以满足您的要求:

var sandboxConnection = new SqliteConnection("Data Source=:memory:");
sandboxConnection.Open();

using (var physicalConnection = new SqliteConnection("Filename=physical.db"))
{
    physicalConnection.Open();
    physicalConnection.BackupDatabase(sandboxConnection);
}

optionsBuilder.UseSqlite(sandboxConnection);

【讨论】:

  • 谢谢你,你拯救了我的一天。我试过你的解决方案,它奏效了:)
【解决方案2】:

将物理 sqlite 文件移到 Web 根目录之外的安全文件夹中。 SqliteCipher也可以用来加密

【讨论】:

  • 据我了解,您的回答是复制 sql db 文件并将连接字符串指向复制的文件?
  • 是的 - 可能是共享目录。关键是出于安全原因将其从网站根目录中删除
  • 好的,我先试试你的解决方案:)。
猜你喜欢
  • 2019-12-22
  • 1970-01-01
  • 2019-06-21
  • 2020-11-27
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多