2016-10-25 4 views
-1

Я скопировал таблицы по умолчанию AspNet Identity (AspNetUsers, AspNetLogin и т. Д.) В мою базу данных, и все сработало нормально. Тогда я изменил их имена и сделал свой собственный контекст со следующим методом:Использование идентификатора Asp.Net с пользовательской базой данных

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

     modelBuilder.Entity<IdentityUser>() 
      .ToTable("tblUsers", "dbo"); 

     modelBuilder.Entity<IdentityRole>() 
      .ToTable("tblRoles", "dbo"); 

     modelBuilder.Entity<IdentityUserRole>() 
      .ToTable("tblUserRoles", "dbo"); 

     modelBuilder.Entity<IdentityUserClaim>() 
      .ToTable("tblUserClaims", "dbo"); 

     modelBuilder.Entity<IdentityUserLogin>() 
      .ToTable("tblUserLogins", "dbo"); 
    } 

Но, похоже, приложение все еще ищет таблицы со старыми именами, как я получаю сообщение об ошибке:

enter image description here

Пожалуйста, подскажите мне, каковы необходимые изменения, которые я еще не сделал?

+0

Вы использовали миграцию для обновления базы данных? –

ответ

0

По How can I change the table names when using Visual Studio 2013 ASP.NET Identity? это должно работать:

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

    modelBuilder.Entity<IdentityUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId"); 
    modelBuilder.Entity<ApplicationUser>().ToTable("MyUsers").Property(p => p.Id).HasColumnName("UserId"); 
    modelBuilder.Entity<IdentityUserRole>().ToTable("MyUserRoles"); 
    modelBuilder.Entity<IdentityUserLogin>().ToTable("MyUserLogins"); 
    modelBuilder.Entity<IdentityUserClaim>().ToTable("MyUserClaims"); 
    modelBuilder.Entity<IdentityRole>().ToTable("MyRoles"); 
} 

также убедитесь, что вы не попасть в ловушку, что ASP.NET Идентичность использует по умолчанию aspnetdb.mdf базы данных и проверьте web.config что-то вроде это:

<connectionStrings> 
    <remove name="LocalSqlServer" /> 
    <add connectionString="yourdatabase" name="LocalSqlServer" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
Смежные вопросы