使用Entity Framework 6 Code First初始化数据库

时间:2014-02-10 00:01:30

标签: ef-code-first asp.net-mvc-5 entity-framework-6 asp.net-identity

这些行EF5SimpleMembershipProvider的等效内容是什么:

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

EF6ASP.NET-Identity

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

1 个答案:

答案 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()方法还接受表名和列名的参数。 IdentityDbContextApplicationDbContext继承自的)包括一些默认映射,以映射到以“AspNet”为前缀的表。您应该可以通过覆盖OnModelCreating()中的ApplicationDbContext并提供自定义映射来更改它们。

因为它只是EF Code First,所以您还可以创建自己的自定义数据库初始化程序,例如,您可以提供Seed()方法来添加一些初始角色和用户。