You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用EF Core搭建SQLite数据库仅生成通用上下文无实体类问题

问题:Scaffold-DbContext仅生成上下文,未生成SQLite表实体类
  • 执行的PMC命令:
    Scaffold-DbContext "DataSource=C:\SQLite\Databases\Ticket0.db3" Microsoft.EntityFrameworkCore.Sqlite -OutputDir C:\WPFTutorials\TicketEF\TicketEF\DB -context TicketContext -force
    
  • 问题现象:反复确认数据源路径正确,但仅生成TicketContext通用上下文,数据库内的5张表和2个视图对应的实体类完全未生成
  • 已做的无效尝试:
    • 注释项目文件中的<Nullable>enable</Nullable>配置
    • 确认已安装Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Sqlite、Microsoft.EntityFrameworkCore.Tools这几个NuGet包
  • 数据库状态:SQLite数据库可在SQLiteStudio正常打开、修改,表和视图结构完整
可行解决步骤
  1. 明确指定要生成的表和视图
    EF Core有时会因无法自动识别所有表/视图而跳过生成,直接在命令里用-Tables和-Views参数指定具体名称(需和SQLiteStudio内的名称完全一致),示例命令:

    Scaffold-DbContext "DataSource=C:\SQLite\Databases\Ticket0.db3" Microsoft.EntityFrameworkCore.Sqlite -OutputDir C:\WPFTutorials\TicketEF\TicketEF\DB -context TicketContext -force -Tables 表1,表2,表3,表4,表5 -Views 视图1,视图2
    

    将上述示例中的“表1”“视图1”替换为数据库内的实际名称即可。

  2. 检查表的主键配置
    EF Core生成实体类要求表必须有主键,打开SQLiteStudio逐一检查每张表:

    • 若某张表未设置主键,EF会跳过该表的实体生成,给表添加主键后重试即可
    • 视图需要有能唯一标识行的字段,EF会自动推断,若无此类字段可手动添加唯一约束或调整视图结构
  3. 清理缓存后重新生成

    • 删除输出目录C:\WPFTutorials\TicketEF\TicketEF\DB下的所有文件,包括已生成的TicketContext
    • 重启Visual Studio,避免PMC残留缓存干扰
    • 重新执行scaffold命令
  4. 确认PMC的目标项目
    在PMC顶部的“默认项目”下拉框中,务必选中要生成实体的TicketEF项目,不要选错为解决方案内的其他项目

  5. 统一EF Core包版本
    确保所有EF Core相关的NuGet包版本完全一致,建议升级到最新稳定版,版本不匹配极易导致scaffolding异常

内容的提问来源于stack exchange,提问作者Shane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:45:20