ASP.NET Core 5脚手架实体主键报错:添加[Key]仍无法解决
问题根因
你遇到的是.NET 5在MacOS环境下脚手架工具的常见兼容问题,代码生成器无法正确读取项目的编译元数据,哪怕Movie类的主键配置完全符合EF Core规则,也会触发主键未定义的报错。
可行解决步骤
- 首先确认项目安装的
Microsoft.VisualStudio.Web.CodeGeneration.Design包版本和.NET 5 SDK匹配,必须安装5.0.x版本,不能使用6.0及以上版本,执行以下命令安装适配版本:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 5.0.2
- 先执行一次项目编译,确保没有任何编译报错,清理之前的缓存:
dotnet clean && dotnet build
- 如果你之前手动创建了
MvcMovieContext、在Startup/Program中手动添加了DbContext注入配置,先把这些内容全部删除,回到脚手架生成上下文的初始状态,避免手动配置干扰代码生成器的识别逻辑。 - 重新执行脚手架命令,添加
--force参数强制覆盖生成内容:
dotnet-aspnet-codegenerator controller -name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries -sqlite --force
备选方案(命令行执行仍失败时使用)
直接使用Visual Studio for Mac的GUI脚手架功能:右键Controllers文件夹 → 选择「添加」→「控制器」→ 选择「使用Entity Framework的视图的MVC控制器」→ 在弹出窗口中依次选择模型类Movie、填写数据上下文类名MvcMovieContext、选择SQLite数据库提供程序,点击生成即可,GUI工具的兼容性远好于Mac下的命令行脚手架,可避开绝大多数适配问题。
内容的提问来源于stack exchange,提问作者WaltRyusan
相关产品推荐
相关产品推荐

