2016-07-24 78 views
0

我試圖重命名我的Identity 2.0表,以使我的應用程序名稱在它們之前。所以我重寫OnModelCreating:ASP.NET遷移期望AspNetUsers即使它在OnModelCreate中重命名

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

     modelBuilder.Entity<IdentityUser>().ToTable("appname_Users"); 
     modelBuilder.Entity<IdentityRole>().ToTable("appname_Roles"); 
     modelBuilder.Entity<IdentityUserClaim>().ToTable("appname_UserClaims"); 
     modelBuilder.Entity<IdentityUserLogin>().ToTable("appname_UserLogins"); 
     modelBuilder.Entity<IdentityUserRole>().ToTable("appname_UserRoles"); 
    } 

我刪除了文件夾遷移,確信這些表不存在,就跑:

enable-migrations -Force 
update-database 

當我嘗試登錄到該網站,還在說它找不到dbo.AspNetUsers。

當我檢查遷移腳本,我看到以下內容:

CreateTable(
      "dbo.AspNetUsers", 
      c => new 
       { 
        Id = c.String(nullable: false, maxLength: 128), 
       }) 
      .PrimaryKey(t => t.Id) 
      .ForeignKey("dbo.appname_Users", t => t.Id) 
      .Index(t => t.Id); 

它在哪裏,甚至得到它需要AspNetUsers的想法?我搜索了文檔,無法找出發生了什麼。任何幫助,將不勝感激。

回答

1

手動刪除數據庫中的所有身份表。然後在插入onModelCreating

 modelBuilder.Entity<ApplicationUser>().ToTable("appname_Users"); 
     modelBuilder.Entity<IdentityUserRole>().ToTable("appname_UserRoles"); 
     modelBuilder.Entity<IdentityUserLogin>().ToTable("appname_UserLogins"); 
     modelBuilder.Entity<IdentityUserClaim>().ToTable("appname_UserClaims"); 
     modelBuilder.Entity<IdentityRole>().ToTable("appname_Roles"); 

如果您創建自定義身份類,然後使用

 modelBuilder.Entity<ApplicationUser>().ToTable("appname_Users"); 
     modelBuilder.Entity<ApplicationRole>().HasKey<string>(r => r.Id).ToTable("appname_Roles"); 
     modelBuilder.Entity<ApplicationUser>().HasMany<ApplicationUserRole>((ApplicationUser u) => u.UserRoles); 
     modelBuilder.Entity<ApplicationUserRole>().HasKey(r => new { UserId = r.UserId, RoleId = r.RoleId }).ToTable("appname_UserRoles"); 

這樣對我的作品.........

+0

我看到你在做實體和我在做實體 ..也許這就是問題所在?我不知道有什麼區別 –

+0

工作就像一個魅力,謝謝!這就是我正在做的,我使用IdentityUser而不是ApplicationUser。 –

+0

由於提供了關於創建自定義標識類的附加信息,所以即使在標記答案之後我也進行了投票。再次感謝。 –