使用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正常打开、修改,表和视图结构完整
可行解决步骤
明确指定要生成的表和视图
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”替换为数据库内的实际名称即可。
检查表的主键配置
EF Core生成实体类要求表必须有主键,打开SQLiteStudio逐一检查每张表:- 若某张表未设置主键,EF会跳过该表的实体生成,给表添加主键后重试即可
- 视图需要有能唯一标识行的字段,EF会自动推断,若无此类字段可手动添加唯一约束或调整视图结构
清理缓存后重新生成
- 删除输出目录
C:\WPFTutorials\TicketEF\TicketEF\DB下的所有文件,包括已生成的TicketContext - 重启Visual Studio,避免PMC残留缓存干扰
- 重新执行scaffold命令
- 删除输出目录
确认PMC的目标项目
在PMC顶部的“默认项目”下拉框中,务必选中要生成实体的TicketEF项目,不要选错为解决方案内的其他项目统一EF Core包版本
确保所有EF Core相关的NuGet包版本完全一致,建议升级到最新稳定版,版本不匹配极易导致scaffolding异常
内容的提问来源于stack exchange,提问作者Shane
相关产品推荐
相关产品推荐

