C# | EF框架 | 查询表格时报告表格不存在

1. 问题分析

  • 错误描述
    • 当 EF Core 尝试查询 Users 表时,SQLite 报告该表不存在。
    • 这通常是因为:
      1. 数据库迁移未正确应用。
      2. 数据库文件路径不正确,EF Core 使用了空的 SQLite 文件。
      3. 数据库文件被手动删除或覆盖。

2. 解决方案

步骤 1:检查数据库文件路径

确保 appsettings.json 中的连接字符串指向正确的 SQLite 文件路径。例如:

"ConnectionStrings": {
    "DefaultConnection": "Data Source=app.db"
}
  • 如果路径不正确,EF Core 可能会创建一个新的空数据库文件。
  • 确保项目目录下存在 app.db 文件。

步骤 2:验证迁移是否已应用
  1. 检查迁移历史
    打开 SQLite 数据库文件(使用工具如 DB Browser for SQLite),查看 __EFMigrationsHistory 表是否存在,并确认其中包含已应用的迁移记录。

  2. 重新应用迁移
    如果迁移未正确应用,可以尝试以下命令:

    dotnet ef database update
    

清理并重新生成数据库

如果上述方法无效,可以清理现有数据库并重新生成:

  1. 删除 SQLite 数据库文件
    删除项目目录下的 app.db 文件:

    rm app.db # Linux/MacOS
    del app.db # Windows
    
  2. 移除现有迁移
    删除现有的迁移文件(位于 Migrations 文件夹中):

    dotnet ef migrations remove
    

    如果迁移文件已被手动删除,跳过此步骤。

  3. 添加新迁移
    创建新的迁移以反映当前模型:

    dotnet ef migrations add InitialCreate
    
  4. 更新数据库
    应用新迁移以生成数据库和表:

    dotnet ef database update
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿波茨的鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值