2017-01-04 13 views
1

ASP.NET IDを使用しています。次のコードを使用してデフォルトテーブルの名前を変更しました。名前が変更された既定のテーブルが、AspNetusersテーブルがまだ作成されています

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<IdentityUser>().ToTable("Users"); 
     modelBuilder.Entity<IdentityRole>().ToTable("Roles"); 
     modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles"); 
     modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims"); 
     modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins"); 
    } 
} 

}

しかし、私は私のアプリを実行すると、AspnetUsersはまだなく、 'ID' という名前の単一の列で作成されます。このテーブルには新しい「ユーザー」テーブルが表示されます。どうして?そして、どうやってこの行動を止めるのですか?

私はここで尋ねた同じ質問を参照してくださいが、良い応答なし:Identity 2.0 Code First Table Renaming

私は事前に謝罪もしそうなら///この質問をreaskingにStackOverflowののガイドラインに違反していないですね!

答えて

-1

すぐに解決策を探しているときにこのポストを見つけた - 今私はコードを少し掘って答えを見つけた。それは誰かを助けるかもしれない。

デフォルトのIdentityUserクラスを上書きしたとしますか?その場合

public class ApplicationUser : IdentityUser 
{ 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
... 

、あなたはModelBuilderのからデフォルトIdentityUserを除外する必要があります:

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     //modelBuilder.Entity<IdentityUser>().ToTable("Users", "dbo"); // we have overwritten IdentityUser, so no more need for the empty AspNetUsers table 
     modelBuilder.Entity<ApplicationUser>().ToTable("Users", "dbo"); // Use ApplicationUser instead 
     modelBuilder.Entity<IdentityRole>().ToTable("Roles", "dbo"); 
関連する問題