gpt4 book ai didi

asp.net-mvc - 如何使用 Entity Framework 和成员资格表初始化数据库

转载 作者:行者123 更新时间:2023-12-02 15:52:29 25 4
gpt4 key购买 nike

我有一个使用 Entity Framework 5.0 Code First 的 MVC4 Web 应用程序。

在 Global.asax.cs 中,我有一个 Bootstrap ,用于初始化 Entity.Database、强制初始化数据库并初始化 Membership 数据库。代码是这样的:

System.Data.Entity.Database.SetInitializer(new DatabaseContextInitializer());
Database.Initialize(true);
WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);

DatabaseContextInitializer 目前非常简单:

public class DatabaseContextInitializer : DropCreateDatabaseIfModelChanges<DatabaseContext>
{
protected override void Seed(DatabaseContext dbContext)
{
base.Seed(dbContext);
db.Set<Workout>().Add(new Workout {Id = 1, Name = "My First workout user1"})

}
}

问题是我无法使用以下方式创建用户:

WebSecurity.InitializeDatabaseConnection(DEFAULTCONNECTION, "UserProfile", "UserId", "UserName", autoCreateTables: true);

因为我遇到数据库未创建的问题。如何使用 Entity Framework 5.0 和 Asp.Net MVC 4 初始化数据库的某些默认用户?

最佳答案

看看following article了解使用迁移为数据库播种的推荐方法。

步骤如下:

  1. 使用 Internet 模板创建新的 ASP.NET MVC 4 应用程序
  2. 在包管理器控制台中键入以下命令:

    enable-migrations
  3. 这将创建一个 ~/Migrations/Configuration.cs 文件,您可以在其中播种数据库:

    using System.Data.Entity.Migrations;
    using System.Linq;
    using System.Web.Security;
    using WebMatrix.WebData;

    internal sealed class Configuration : DbMigrationsConfiguration<MvcApplication1.Models.UsersContext>
    {
    public Configuration()
    {
    AutomaticMigrationsEnabled = true;
    }

    protected override void Seed(MvcApplication1.Models.UsersContext context)
    {
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

    if (!Roles.RoleExists("Administrator"))
    {
    Roles.CreateRole("Administrator");
    }

    if (!WebSecurity.UserExists("john"))
    {
    WebSecurity.CreateUserAndAccount("john", "secret");
    }

    if (!Roles.GetRolesForUser("john").Contains("Administrator"))
    {
    Roles.AddUsersToRoles(new[] { "john" }, new[] { "Administrator" });
    }
    }
    }
  4. 在 web.config 中指定成员身份和角色提供者:

    <roleManager enabled="true" defaultProvider="SimpleRoleProvider">
    <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
    </providers>
    </roleManager>
    <membership defaultProvider="SimpleMembershipProvider">
    <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
    </providers>
    </membership>
  5. 在包管理器控制台中运行迁移:

    update-database -verbose

关于asp.net-mvc - 如何使用 Entity Framework 和成员资格表初始化数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com