Asp.net
擴展 ASP.NET Identity 2.0
我無法理解整個 ASP.Net Identity 框架,我首先嘗試將 Identity 1.0 集成到現有應用程序中,但最終得到了 2 個 DbContext 類,我的應用程序數據位於 MyDbContext 上,Identity 使用者數據位於 IdentityDbContext 上。
我想為我的應用程序數據和與身份相關的數據使用一個 DbContext,我在另一個問題上發現我可以像使用 DbContext 一樣使用 IdentityDbContext;但是,我想我錯過了一些東西。
我正在使用來自身份團隊的範例項目
PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre並嘗試將 DbSet 屬性插入 ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("DefaultConnection") { } static ApplicationDbContext() { // Set the database intializer which is run once during application start // This seeds the database with admin user credentials and admin role Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer()); } public virtual DbSet<Student> students { get; set; } public virtual DbSet<Teachers> teachers { get; set; } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } }我正在使用 ApplicationDbInitializer 種子方法來填充這兩個表,如下所示:
Student s = new Student { Name = "John" ... }; db.students.Add(s); db.SaveChanges();但是 EF 似乎沒有創建那兩個表,並且沒有呼叫種子方法,這是怎麼回事?
編輯:
好吧,我需要執行使用 EF 數據庫的程式碼來刪除和重新創建數據庫。
使用 IdentityDbContext 管理我的所有應用程序數據是否有任何成本?使用 IdentityDbContext 和使用通用版本 IdentityDbContext<IdentityUser> 有什麼區別?
在大多數情況下,最好只使用一個實體框架上下文,從那時起,您只需管理那個單一的上下文,這意味著更少的成本。
兩者之間的區別在於,
IdentityDbContext它只是一個派生自 DbContext 的類(就像您自己製作時一樣),但它包含處理身份驗證的額外 DbSet,因此您不必自己實現它。派生IdentityDbContext是好的。有關更多資訊,您可以查看文件。