web-dev-qa-db-ja.com

ASP.NET Core 2.1-IdentityUserの問題-「IdentityUser」のDbSetを作成できません。このタイプはコンテキストのモデルに含まれていません

コードを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

8
Les P

public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser>public partial class ApplicationDbContext : IdentityDbContext<IdentityUser>に変更してみてください

コンパイラは、ジェネリックIdentityDbContext<TUser>クラスに提供された型で DbSet を生成します。

18

あなたのstartup.csの変更から

services.AddDefaultIdentity<IdentityUser>()

services.AddDefaultIdentity<ApplicationUser>()
6
Chpn Dave

フォローアップとして、次の問題を回避するために、ここでこれが修正された場合:Views\Shared_LoginPartial.cshtmlのタイプも変更する必要があります

から

@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
2
t2t

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);
}
0
Ali Ramezani