我一直在尝试将一个带有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只能与派生的用户一起调用 来自IdentityUser。
当我搜索此错误时,我不断收到有关自定义身份模型的问题,但这不是我的情况。我只是想按原样迁移它。我错过了什么?
答案 0 :(得分:0)
发现问题。我使用AddIdentity<>
错了。
应该使用ApplicationUser
代替MyDbContext
。
这是更正后的版本:
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<MyDbContext>()
.AddDefaultTokenProviders();