这些行EF5
与SimpleMembershipProvider
的等效内容是什么:
if (!WebMatrix.WebData.WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
EF6
与ASP.NET-Identity
?
这些行来自方法protected void Application_Start()
中的global.asax文件。
答案 0 :(得分:1)
ASP.NET Identity的实体框架实现使用Code First创建映射并初始化数据库。它只是使用标准的EF Code First初始化数据库,因此实际上没有上面引用的等效代码(它们实际上是对Simple Membership API的调用,而不是EF)。
首次访问ApplicationDbContext
时(在默认的MVC模板中,这发生在AccountController
中),EF运行上下文的初始化程序。默认情况下,它使用CreateDatabaseIfNotExists
初始化程序,它会检查表是否已创建,并在需要时创建表。
Simple Membership调用指定要使用的连接字符串的名称。在ASP.NET Identity中,这是在ApplicationDbContext
的构造函数中设置的(在IdentityModels.cs
中)。
Simple Membership InitializeDatabaseConnection()
方法还接受表名和列名的参数。 IdentityDbContext
(ApplicationDbContext
继承自的)包括一些默认映射,以映射到以“AspNet”为前缀的表。您应该可以通过覆盖OnModelCreating()
中的ApplicationDbContext
并提供自定义映射来更改它们。
因为它只是EF Code First,所以您还可以创建自己的自定义数据库初始化程序,例如,您可以提供Seed()
方法来添加一些初始角色和用户。