2016-03-09 105 views
0

測試數據庫,多個項目。ASP.NET身份2表映射

首先MVC項目工作正常使用Identity 2.糾正表建成,即AspNetUsers,AspNetRoles等

在同一個數據庫中第二個項目沒有工作,我很困惑,爲什麼不呢?

途徑是註冊。

在我AccountController.cs,預期和點擊這個代碼註冊方法被稱爲:

var user = new ApplicationUser { UserName = model.ContactEmail, Email = model.ContactEmail }; 

調試與VS2015,表明用戶是完全填充。

想用並且standlone標識表,以便添加以下代碼被調用正確的下一個(在我IdentityModels.cs文件):

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
      modelBuilder.Entity<IdentityUser>().ToTable("sp_AspNetUsers","dbo"); 
     } 

調試器顯示沒有怨言。

返回到下一行Account Controller.cs這樣的:

var result = await UserManager.CreateAsync(user, model.Password); 

錯誤說 「無法將NULL值插入列 '用戶名',表 'dbName.dbo.AspNetUsers';」

錯誤似乎自明但是:

1)爲什麼引用AspNetUsers表,而不是 sp_AspNetUsers表?

2)調試顯示user.UserName具有價值爲何還認爲這是 NULL?

新的MVC和身份,所以任何指針來幫助我的學習將不勝感激。


編輯

我現在已經修改了代碼IdentityModel.cs到:

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
      modelBuilder.Entity<IdentityUser>().ToTable("sp_AspNetUsers"); 
      modelBuilder.Entity<ApplicationUser>().ToTable("sp_AspNetUsers"); 
      modelBuilder.Entity<IdentityUserRole>().ToTable("sp_AspNetUserRoles"); 
      modelBuilder.Entity<IdentityUserLogin>().ToTable("sp_AspNetUserLogins"); 
      modelBuilder.Entity<IdentityUserClaim>().ToTable("sp_AspNetUserClaim"); 
      modelBuilder.Entity<IdentityRole>().ToTable("sp_AspNetRoles"); 
     } 

錯誤我現在得到的是:

無效列名 '鑑別'

無法在任何地方的Identity表中看到此列?

回答

1

首先刪除所有與ASP身份相關的表或重命名它們,以便稍後可以複製數據並嘗試重新創建表,並且如果您已成功恢復舊數據。