SQLite错误14:“无法打开数据库文件”,首先使用EF Core代码

Ing*_*goB 7 sqlite ef-code-first entity-framework-core

我正在

SQLite错误14:“无法打开数据库文件”

首先使用EF Core代码,不知道为什么。我第一次工作良好,在c:\ users \ username \ AppData \ Local \ Packages \ PackageId \ LocalState中创建了数据库文件。

然后,我删除了数据库文件,并首先删除了代码迁移和ModelSnapshot类,并创建了一个新迁移(我在应用程序启动时调用DbContext.Database.Migrate()以自动执行它们)。现在,无法再次创建数据库。

dar*_*dog 17

我认为问题是 EntityFramework Core 在使用 SQLite 提供程序时无法自行创建文件夹。不知道在使用其他基于文件的数据库提供程序时是否也出现此问题。

我有同样的问题:
我的数据源类似于: optionsBuilder.UseSqlite(@"Data Source=c:\foo_db\bar_db.db");

在c:\ 驱动器中创建“foo_db”文件夹后,问题解决了,EF Core 在文件夹中创建了 .db 文件。

  • 这节省了我几个小时!谢谢!无论出于何种原因 EF 无法创建文件夹。仅数据库文件 (3认同)

Ing*_*goB 6

解决了。

  1. 激活“中断所有异常”(在异常设置窗口中)会导致奇怪的“无法打开数据库文件”异常。

  2. 删除实体类上的 [Table("TableName")] 属性会导致迁移类中出现一些奇怪的表创建行为。我认为该属性只需要创建一个名称不同于类名的表。

  • 我相信#2 与它无关。这不是问题(或错误)。你删除了数据库。当您调用 Migrate(甚至EnsureCreated)时,EF 需要确定数据库是否已经存在(以便它可以在不存在的情况下创建一个)。EF 通过连接到数据库来做到这一点。如果成功则数据库存在,如果失败则不存在。由于您已中断所有异常,因此在连接到数据库时遇到异常时它会破坏代码。如果您继续执行,EF 将捕获异常并为您创建数据库。 (4认同)

小智 6

实际问题是迁移和数据库更新后 *.db 文件不会自动转到 bin 文件夹。您只需选择 *.db 并更改属性“复制到输出目录”=“如果较新则复制”。这将解决问题..请尝试告诉我们。