VS2022+EF Core 6添加Razor页面报类型不存在错误如何解决
报错原因
- 核心原因为命名空间拼写不匹配:系统脚手架查找的实体类路径为
Scaffolding.Entities.EncylopediaEntry,但你实际定义实体类的命名空间为拼写错误的Scaffolding.Entitites,二者不一致导致脚手架无法定位对应类型。 - 其他可能的触发原因:
- Razor页面所在项目未添加对实体类项目、DbContext项目的项目引用,跨项目访问类型失败
- 实体类或DbContext所在项目存在编译错误,未生成最新的程序集文件
- 实体类项目缺少
Microsoft.EntityFrameworkCore.Design依赖包,脚手架无法读取项目内的类型定义
解决步骤
- 第一步:修正实体类的命名空间拼写,将
namespace Scaffolding.Entitites改为namespace Scaffolding.Entities,和脚手架查找的路径保持一致 - 第二步:右键点击Razor页面项目的「依赖项」,添加对实体类项目、DbContext项目的项目引用
- 第三步:依次编译实体类项目、DbContext项目、Razor页面项目,确认整个解决方案没有编译报错
- 第四步:如果仍有问题,在实体类和DbContext项目中安装和EF Core 6版本匹配的
Microsoft.EntityFrameworkCore.DesignNuGet包 - 第五步:重新执行Razor页面脚手架生成操作,选择对应的模型类和DbContext即可正常生成。
(可选优化)建议将DbContext中的DbSet属性改为符合C#命名规范的帕斯卡写法:public DbSet<EncylopediaEntry> EncyclopediaEntries { get; set; },避免后续其他框架调用时出现识别问题。
内容的提问来源于stack exchange,提问作者Abraham Lincoln
相关产品推荐
相关产品推荐

