將 ASP.NET Identity 升級到 2.0 後出現異常
我的項目:VS2013,實體框架,Web 表單,數據庫優先,身份
我今天(2014-4-15)更新了我項目的所有 NuGet 包。其中Identity升級為2.0.0.0。
我以為事情進展順利,但不幸的是,當我執行應用程序時,以下語句給出了異常。
namespace xxx.Models { // You can add User data for the user by adding more properties to your User class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. public class ApplicationUser : IdentityUser { } public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("MyConnection") { } } ... }異常資訊如下。它要求我進行 Code First 遷移。但我的項目是 Database First webforms 項目。我怎麼解決這個問題?謝謝!
Microsoft.AspNet.Identity.EntityFramework.dll 中出現“System.InvalidOperationException”類型的異常,但未在使用者程式碼中處理
附加資訊:支持“ApplicationDbContext”上下文的模型自數據庫創建以來已更改。這可能是因為 ASP.NET Identity Framework 使用的模型已更改或您的應用程序中使用的模型已更改。要解決此問題,您需要更新數據庫。考慮使用 Code First 遷移來更新數據庫 ( http://go.microsoft.com/fwlink/?LinkId=301867 )。
在使用 Code First 遷移更新數據庫之前,請通過在應用程序的 ApplicationDbContext 的建構子中設置 throwIfV1Schema = false 來禁用 ASP.NET Identity 的架構一致性檢查。公共 ApplicationDbContext() : base(“ApplicationServices”, throwIfV1Schema:false)
您需要按照錯誤說明來禁用模式一致性。這是您從 1.0 版升級到 2.0 版時發生的一次性事情。
public ApplicationDbContext() : base("MyConnection", throwIfV1Schema:false)下一步 - 進行遷移。
之後一切都應該正常工作,您可以刪除它
throwIfV1Schema:false您還可以查看此以獲取更多資訊
問題在這裡:
public class ApplicationUser : IdentityUser { }我認為您應該更改為
partial類以擴展實體框架中的實體。原因是 EF 會為每個實體生成代理類來連接數據庫。該類
partial應該寫在同一個命名空間中。