运行所选代码生成器时出错:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOption”的服务

Posted

技术标签:

【中文标题】运行所选代码生成器时出错:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOption”的服务【英文标题】:There was an error running the selected code generator: Unable to resolve service for type 'Microsoft.EntityFrameworkCore.DbContextOption 【发布时间】:2021-10-01 18:23:00 【问题描述】:

我正在使用 Visual Studio 2022 Preview 和 .NET 6 SDK。

在这里,我正在创建一个有 2 层的 webAPI 项目。 api 项目 (Bgvsystem.webAPI) 类库(BgvSystem.Persistance)

NuGet 包-

安装包 Microsoft.EntityFrameworkCore.SqlServer -Version 6.0.0-rc.1.21452.10

安装包 Microsoft.EntityFrameworkCore.Tools -Version 6.0.0-rc.1.21452.10

安装包 Microsoft.VisualStudio.Web.CodeGeneration.Design -版本 6.0.0-rc.1.21464.1

当我尝试使用脚手架添加控制器时,出现以下错误

There was an error running the selected code generator: unable to resolve service for type 'microsoft.entityframeworkcore.dbcontextoption.. While attempting to activate Dbcontext in  .net 6 and visual studio 2022 preview

如何解决这个问题?请帮忙。

【问题讨论】:

我这里有同样的问题..会试试这个***.com/questions/70516934/… 【参考方案1】:

苦苦挣扎了3天,终于找到了错误并修复了。

实际上我必须将连接字符串放在 MyApp.Persistance.DbContextClass 中,如下所示

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        
            if (!optionsBuilder.IsConfigured)
            
                optionsBuilder.UseSqlServer("Data Source=DESKTOP-SV8GPJ2\\SQLEXPRESS;Initial Catalog=StarterAppDB;Persist Security Info=True;User ID=sa;Password=Admin@1234");
            
        

然后它工作正常。

【讨论】:

【参考方案2】:

您需要将 DBContext 添加到 startup.cs 文件中的服务集合或作为构造函数 BGvSystemContext 类传递。

【讨论】:

asp.net core 6上没有Startup.cs,只有Program.cs @HeitorGiacomini 你可以添加它【参考方案3】:

.NET 6

你可以这样试试

Program.cs

builder.Services.AddDbContext<YourDbContext>(options =>
     options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));

appsettings.json

"ConnectionStrings": 
   "DefaultConnection": "Server=YourServer; Database=YourDb; Integrated Security=true; MultipleActiveResultSets=true; Trusted_Connection=True"

YourDbContext.cs

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

    if (!optionsBuilder.IsConfigured)
    
        optionsBuilder.UseSqlServer("Server=YourServer; Database=YourDb; Integrated Security=true; MultipleActiveResultSets=true; Trusted_Connection=True");
    

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于运行所选代码生成器时出错:无法解析类型“Microsoft.EntityFrameworkCore.DbContextOption”的服务的主要内容,如果未能解决你的问题,请参考以下文章

运行所选代码生成器时出错:无法检索 xxx.Goal 的元数据 .. 由应用程序用户的外键引起

VS 2015 - 运行所选代码生成器时出错 - 此问题的解决方案是什么?

VS 2013 脚手架中的“运行所选代码生成器时出错”

运行所选代码生成器时出错:“对象引用未设置为对象的实例。”错误?

另一个“运行所选代码生成器时出错:”和“包还原失败。回滚包更改“(解决方案名称)

运行所选代码生成器时出错:“值-1超出了可接受的[0,2147483647]范围。参数名称:value”