无法创建类型为“ AppDbContext”的对象

叶夫根尼

为了学习,我正在尝试进行社交登录。

我使用例如https://tecknoworks.com/how-to-integrate-social-login-in-a-web-api-solution/以下示例,在执行Add-Migration InitialCreate时无法创建迁移

“无法创建类型为'AppDbContext'的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728》

在搜索找到建议以在其上使用add-migration initial -verbose时出现错误

“访问Microsoft.Extensions.Hosting服务时遇到意外的返回类型。方法'CreateHostBuilder(string [])'应该返回类型为'IHostBuilder'的对象。无需应用程序服务提供商就可以继续。”

public class Program
    {
        public static void Main(string[] args)
        {
            var host = CreateWebHostBuilder(args);

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;
                var loggerFactory = services.GetRequiredService<ILoggerFactory>();
                var logger = loggerFactory.CreateLogger<Program>();
                try
                {
                    var environment = services.GetRequiredService<IWebHostEnvironment>();

                    if (environment.IsDevelopment())
                    {
                        var context = services.GetRequiredService<Infrastructure.AppDbContext>();
                        MigrateDatabaseToLatestVersion.ExecuteAsync(context).Wait();
                    }
                }
                catch (AppException ex)
                {
                    logger.LogError(ex, "An error occurred creating/updating the DB.");
                }
            }

            host.Run();
        }

        private static IWebHost CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }

代码AppDbContext

public class AppDbContext : IdentityDbContext<AppUser>
    {
        public AppDbContext(DbContextOptions<AppDbContext> options)
            : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.Entity<AppUser>(entity => { entity.ToTable(name: "tr_Users"); });
            builder.Entity<IdentityRole>(entity => { entity.ToTable(name: "tr_Roles"); });
            builder.Entity<IdentityUserRole<string>>(entity => { entity.ToTable("tr_UserRoles"); });
            builder.Entity<IdentityUserClaim<string>>(entity => { entity.ToTable("tr_UserClaims"); });
            builder.Entity<IdentityUserLogin<string>>(entity => { entity.ToTable("tr_UserLogins"); });
            builder.Entity<IdentityUserToken<string>>(entity => { entity.ToTable("tr_UserTokens"); });
            builder.Entity<IdentityRoleClaim<string>>(entity => { entity.ToTable("tr_RoleClaims"); });

            builder.ApplyConfiguration(new AppUserConfiguration());
        }
    }

配置服务

public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();

            ConfigureSwagger(services);

            services.AddDbContext<AppDbContext>(it =>
            {
                it.UseSqlServer(Configuration["Database:ConnectionString"]);
            },
                 ServiceLifetime.Transient
            );

            CreateIdentityIfNotCreated(services);

            ConfigureAuthenticationSettings(services);

            services.AddScoped<IUserService, UserService>();

            services.AddMvc(options => options.RespectBrowserAcceptHeader = true);
        }

在数据库表[__EFMigrationsHistory]中创建

大师斯特隆

您需要更改IWebHost CreateWebHostBuilder方法以返回IHostBuilder(并Main相应地),在您的情况下,它将类似于以下内容:

public static IHostBuilder CreateWebHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

public static void Main(string[] args)
{
    var host = CreateWebHostBuilder(args).Build();
    .....
    host.Run();
}

另外,我已经更改CreateWebHostBuilder为使用,Host而不是使用“从ASP.NET Core 2.2迁移到3.0”文档中WebHost编写的内容

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WPF与网络核心上的实体框架-无法创建和创建AppDbContext类型的对象

无法创建类型为'MyEFCoreDbContext'的对象xaf Blazor EFCore

ASPPDFLib无法创建类型为“ Persits.Pdf”的对象

Java - 无法创建对象。收到错误消息:“无法将对象解析为类型”

无法将类型为“ System.Decimal”的对象转换为类型为“ System.String”的对象。创建EDIT视图后

带有dotnet ef错误的迁移:无法创建类型为“ MyClass”的对象

无法创建类型为“ MyContext”的对象。针对设计时支持的不同模式

DbSet.Cast <TEntity>()错误:无法从非通用DbSet为类型'Entity'的对象创建DbSet <IEntity>

无法创建类型为“ VegaDbContext”的对象。针对设计时支持的不同模式

无法在TS中为对象分配类型

无法转换类型为“ SingleResult”的对象

无法使用类型为*的对象调用$ function

无法创建“AppContext”类型的对象。使用详细但

无法创建“ AppContext”类型的对象。Npgsql + EFCore

无法从 Maven 类型项目创建类的对象

添加迁移:无法创建AppContext类型的对象

Java无法识别创建为数组的对象

docker:OCI运行时创建失败:json:无法将对象解组为[]类型的Go值string:未知

EF Core 6 无法完成迁移,无法创建类型的对象

[Koin]:实例创建错误:无法为以下对象创建实例

无法将类型为“ System.TimeSpan”的对象转换为类型为“ System.IConvertible”的对象

无法将类型为“ AttachmentDetailsDto”的对象转换为类型为“ System.String”的对象

无法将类型为“ System.DBNull”的对象转换为类型为“ System.Byte []”的对象

无法将类型为“ System.Byte []”的对象转换为类型为“ System.String”的对象

使用setMethod为对象类型的列表创建方法

如何创建类型为List <class>的class属性的对象

在python中创建类型为datetime64 [ns]的对象

创建类型为ng.IQService的对象;不注射

无法分配抽象类型为SortedListHasA的对象