コードをASP.NET Core 2.0からCore 2.1にアップグレードしました。新しいCore 2.1プロジェクトを作成し、コードを新しいプロジェクトに移動しました。スタートアップとApplicationDbContext
のサンプルを提供しました
ログインしようとすると次のエラーが表示されます
このタイプはコンテキストのモデルに含まれていないため、「IdentityUser」のDbSetを作成できません。 Microsoft.EntityFrameworkCore.Internal.InternalDbSet.get_EntityType()
startup.cs
//Core 2.1
services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
////Old Core 2.0 Code
//services.AddIdentity<ApplicationUser, IdentityRole>()
// .AddEntityFrameworkStores<ApplicationDbContext>()
// .AddDefaultTokenProviders();
ApplicationDbContext.cs
public partial class ApplicationDbContext :
IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext>
options)
: base(options)
{
Database.EnsureCreated();
}
}
次のマイクロソフトの記事を確認しました: https://blogs.msdn.Microsoft.com/webdev/2018/05/30/asp-net-core-2-1-0-now-available/ =
https://docs.Microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-2.1
public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser>
をpublic partial class ApplicationDbContext : IdentityDbContext<IdentityUser>
に変更してみてください
コンパイラは、ジェネリックIdentityDbContext<TUser>
クラスに提供された型で DbSet を生成します。
あなたのstartup.csの変更から
services.AddDefaultIdentity<IdentityUser>()
に
services.AddDefaultIdentity<ApplicationUser>()
フォローアップとして、次の問題を回避するために、ここでこれが修正された場合:Views\Shared_LoginPartial.cshtml
のタイプも変更する必要があります
から
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
に
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
ApplicationDbContext
を次のように変更します。
private static bool _Created = false;
public ApplicationDbContext()
{
if (!_Created)
{
_Created = true;
Database.EnsureCreated();
}
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"server = .\SQLSERVER; initial catalog = DBName; Integrated Security = True; MultipleActiveResultSets = True; App = EntityFramework & quot; ");
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}