Asp.net
重命名 dbo.AspNetUsers 表
我正在嘗試重命名由 ASP.net Identity 2.0 生成的預設表名。我閱讀了關於 stackoverflow 的所有文章、問題和答案,但我仍然遇到同樣的錯誤。
我將這些表重命名為 Roles、UserClaims、Logins、UserRoles 和 Users。我還將應用程序 dbcontext 更改為以下內容
public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<IdentityUser>().ToTable("Users", "dbo"); modelBuilder.Entity<IdentityRole>().ToTable("Roles", "dbo"); modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles", "dbo"); modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims", "dbo"); modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins", "dbo"); } }但是我不斷收到
Invalid object name 'dbo.AspNetUsers'.錯誤,我不知道為什麼它仍然試圖首先定位AspNetUsers而不僅僅是使用者,儘管我做了上面的更改。現在徹底絕望了。
數據庫以及具有新表名的相同列:
和 SQL 數據庫項目:
您需要更新數據庫。
Enable-Migrations並且Update-Database,在這裡詳細解釋。EF 程式碼優先方法的要點是編寫我們的模型類和配置,每次我們更改某些內容時,我們都會使用 EF 遷移來更新數據庫架構。使用 asp.net-identity-entityframework 的數據庫優先方法在此處和此處進行了解釋,不是那麼簡單
在 IdentityModels.cs 中編寫以下程式碼
public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DBConnectionString", throwIfV1Schema: false) { } protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims"); modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles"); modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins"); modelBuilder.Entity<IdentityRole>().ToTable("Roles"); modelBuilder.Entity<ApplicationUser>().ToTable("Users"); } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } }在 Global.asax.cs 文件的 Application_Start() 方法中編寫以下程式碼
Database.SetInitializer<ApplicationDbContext>(null);


