Asp.net-Mvc
數據庫中已經有一個名為“AspNetRoles”的對象
前段時間,我用 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"); }