0

什麼是這些線路EF5SimpleMembershipProvider相當於:初始化數據庫與實體框架6碼首先

if (!WebMatrix.WebData.WebSecurity.Initialized) 
{ 
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
} 

EF6ASP.NET-Identity

這些行來自方法protected void Application_Start()中的global.asax文件。

回答

1

ASP.NET Identity的實體框架實現使用Code First創建映射並初始化數據庫。它只是使用標準的EF Code First來初始化數據庫,所以實際上並沒有上面提到的等效代碼(它們實際上是調用Simple Membership API,而不是EF)。

ApplicationDbContext首次訪問(在默認MVC模板,這種情況發生在AccountController),EF運行上下文的初始化。默認情況下,它使用CreateDatabaseIfNotExists初始化程序,該初始化程序檢查是否已創建表並根據需要創建它們。

Simple Membership調用指定要使用的連接字符串的名稱。在ASP.NET身份中,這在ApplicationDbContext的構造函數中設置(在IdentityModels.cs中)。

簡單成員資格InitializeDatabaseConnection()方法還需要參數表和列名稱。 IdentityDbContext(其中ApplicationDbContext從其繼承)包含一些映射到前綴爲「AspNet」的表的默認映射。您應該可以通過覆蓋ApplicationDbContext中的OnModelCreating()並提供自定義映射來更改它們。

而且,因爲它只是EF Code First,所以您還可以創建自己的自定義數據庫初始值設定項,您可以在其中提供一個Seed()方法,以添加一些初始角色和用戶。