Asp.net-Mvc

數據庫中已經有一個名為“AspNetRoles”的對象

  • June 11, 2014

前段時間,我用 Identity 1.0 版本創建了一個 ASP.NET MVC 5 網站,並用這個項目創建了 Identity 表。現在我必須讓其他網站使用相同的數據庫進行身份驗證,但現在身份版本是 2.0。因此,當我嘗試在新網站中進行身份驗證時,會出現一些錯誤。

我嘗試使用 Migrations 方法遷移數據庫,但是There is already an object named 'AspNetRoles' in the database. 當我在 PM 控制台中鍵入 Update-Database 時,它感到困惑並且出現此錯誤。

我的問題是,使用同一個數據庫對兩個站點進行身份驗證的最佳方式是什麼(一個使用 1.0 身份版本,另一個使用 2.0)。我真的需要遷移數據庫嗎?

如果是,我該如何解決我遇到的這個錯誤?

Add-Migration InitialMigrations -IgnoreChanges

這應該會生成一個空白的“InitialMigration”文件。現在,將任何所需的更改添加到您想要的類。添加更改後,再次執行更新命令:

update-database -verbose

現在將應用自動遷移,並且表格將隨著您的更改而更改。

編輯: 這是將身份 1 遷移到 2 的解決方案從 ASP.NET.Identity 1.0 升級到 2.0 使用此手動遷移

public override void Up()
   {
       RenameColumn(table: "dbo.AspNetUserClaims", name: "User_Id", newName: "UserId");
       RenameIndex(table: "dbo.AspNetUserClaims", name: "IX_User_Id", newName: "IX_UserId");
       DropPrimaryKey("dbo.AspNetUserLogins");
       AddColumn("dbo.AspNetUsers", "Email", c => c.String(maxLength: 256));
       AddColumn("dbo.AspNetUsers", "EmailConfirmed", c => c.Boolean(nullable: false));
       AddColumn("dbo.AspNetUsers", "PhoneNumber", c => c.String()); 
       AddColumn("dbo.AspNetUsers", "PhoneNumberConfirmed", c => c.Boolean(nullable: false));
       AddColumn("dbo.AspNetUsers", "TwoFactorEnabled", c => c.Boolean(nullable: false));
       AddColumn("dbo.AspNetUsers", "LockoutEndDateUtc", c => c.DateTime());
       AddColumn("dbo.AspNetUsers", "LockoutEnabled", c => c.Boolean(nullable: false));
       AddColumn("dbo.AspNetUsers", "AccessFailedCount", c => c.Int(nullable: false));
       AlterColumn("dbo.AspNetUsers", "UserName", c => c.String(nullable: false, maxLength: 256));
       AlterColumn("dbo.AspNetUsers", "FirstName", c => c.String(nullable: false));
       AlterColumn("dbo.AspNetUsers", "LastName", c => c.String(nullable: false));
       AddColumn("dbo.AspNetUsers", "CreatedDateTime", c => c.DateTime(nullable: false));
       AlterColumn("dbo.AspNetRoles", "Name", c => c.String(nullable: false, maxLength: 256));
       AddPrimaryKey("dbo.AspNetUserLogins", new[] { "LoginProvider", "ProviderKey", "UserId" });
       CreateIndex("dbo.AspNetUsers", "UserName", unique: true, name: "UserNameIndex");
       CreateIndex("dbo.AspNetRoles", "Name", unique: true, name: "RoleNameIndex");
       DropColumn("dbo.AspNetUsers", "Discriminator");
   } 

引用自:https://stackoverflow.com/questions/24169140