当 DbContext 位于单独的项目中时,Visual Studio 2022 .NET 6 脚手架不起作用

jim*_*mmy 4 c# entity-framework-core .net-6.0

我正在设置我的第一个 .NET 6 MVC 站点,但遇到了第一个障碍。

\n

我的解决方案中有 3 个项目。\n域:包含实体\n基础设施:具有应用程序数据库上下文\nWebUi:包含 Web 界面

\n

添加迁移和更新数据库工作正常,但是当我尝试搭建控制器时,出现错误:

\n
\n

运行所选代码生成器时出错:

\n
\n
\n

尝试激活时无法解析类型“Microsoft.EntityFrameworkCore.DbContextOptions\xe2\x80\x99”的服务

\n
\n

然后在其他类库项目中命名DbContext。

\n

几个月前,我发现其他人也遇到了类似的问题,但除了将所有内容都纳入同一个项目之外,没有人有任何解决方案。

\n

有没有人遇到过这个并找到解决方案?

\n

jim*_*mmy 14

终于找到了对我有用的东西:您可以在与 ApplicationDbContext 类相同的文件夹中创建一个 dbcontext 工厂类。该工厂类在设计时创建ApplicationDbContext并且脚手架正确运行

public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
        public ApplicationDbContext CreateDbContext(string[] args)
        {
            var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
            optionsBuilder.UseSqlServer("Server=(localdb)\\MSSQLLocalDB;Database=EcommerceDb;Trusted_Connection=True;MultipleActiveResultSets=true");

            return new ApplicationDbContext(optionsBuilder.Options);
        }
}
Run Code Online (Sandbox Code Playgroud)

信用转到: https: //github.com/dotnet/Scaffolding/issues/1765#issuecomment-1058674843