多项目场景下从方法生成视图脚手架错误:无法解析DbContext服务
解决ASP.NET Core MVC多项目下无法从方法生成视图的问题
以下是针对主MVC项目+模型/数据类库的场景,解决视图生成失败的具体方案:
检查项目引用与访问权限
确保主MVC项目已添加两个类库的项目引用,且类库中的模型类、DbContext类都是public修饰的。如果模型是internal,视图生成工具在设计时无法跨项目访问,直接改成public最省心。配置设计时DbContext工厂
运行时在Program.cs注册DbContext没问题,但视图生成工具是设计时运行的,可能无法读取主项目的配置。在存放DbContext的类库中添加一个设计时工厂类,让工具能直接创建DbContext实例:using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; namespace YourDataLibraryNamespace { public class YourDbContextDesignFactory : IDesignTimeDbContextFactory<YourDbContext> { public YourDbContext CreateDbContext(string[] args) { var options = new DbContextOptionsBuilder<YourDbContext>(); // 这里可以用和主项目一致的连接字符串,或者临时写一个测试用的 options.UseSqlServer("Server=.;Database=YourDb;Trusted_Connection=True;TrustServerCertificate=True"); return new YourDbContext(options.Options); } } }确认视图生成的目标项目
右键控制器方法选择“添加视图”时,检查弹窗顶部的“项目”下拉框,确保选中的是主MVC项目,而不是类库项目——工具默认可能选错项目,导致无法找到控制器上下文。清理重建解决方案
有时候项目缓存或编译产物会干扰工具识别。右键解决方案选择“清理解决方案”,然后删除所有项目的bin、obj文件夹,再重新生成整个解决方案,之后再尝试生成视图。手动初始化视图骨架
如果自动生成还是失败,可以先在Views对应文件夹下手动创建空的.cshtml文件,再右键控制器方法选择“添加视图”,选择对应模板后,工具通常能正确识别模型并填充内容。
内容的提问来源于stack exchange,提问作者jukenduit
相关产品推荐
相关产品推荐

