项目
类库
我一直在尝试将带有 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();