迁移 .net 核心 2 类库中的标识



我一直在尝试将带有 Identity 的类库添加到 .net core 2 项目中。

项目Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddIdentity<MyDbContext, IdentityRole>()
            .AddEntityFrameworkStores<MyDbContext>()
            .AddDefaultTokenProviders();
        services.AddMvc();
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
            app.UseDatabaseErrorPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
        app.UseStaticFiles();
        app.UseAuthentication();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
   }

类库:

namespace MSContext
{
    public class MyDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
    {
        public MyDbContext CreateDbContext(string[] args)
        {
            var builder = new DbContextOptionsBuilder<MyDbContext>();
            builder.UseSqlServer(connectionString);
            return new MyDbContext(builder.Options);
        }
    }
    public class MyDbContext: IdentityDbContext<ApplicationUser>
    {
        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {
        }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(connectionString);
        }


        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
}

类库ApplicationUser.cs

public class ApplicationUser : IdentityUser
{
}

当我尝试使用以下方法进行迁移时: Add-Migration

我收到此错误:

在类上调用方法"BuildWebHost"时出错 "程序"。在没有应用程序服务提供商的情况下继续。错误: AddEntityFrameworkStores 只能使用派生的用户调用 来自身份用户。

当我搜索此错误时,我不断收到有关自定义标识模型的问题,但事实并非如此。我只是想按原样迁移它。我错过了什么?

发现问题。我用错AddIdentity<>。应该使用ApplicationUser而不是MyDbContext.这是更正后的版本:

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<MyDbContext>()
        .AddDefaultTokenProviders(); 

相关内容

  • 没有找到相关文章

最新更新