加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何使用Entity Framework和Membership表初始化

发布时间:2020-12-15 18:37:16 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用实体框架5.0代码优先的MVC4 Web应用程序。 在Global.asax.cs中,我有一个引导程序,初始化Entity.Database,强制数据库被初始化并初始化成员资格的数据库。代码是这样的: System.Data.Entity.Database.SetInitializer(new DatabaseContextIniti
我有一个使用实体框架5.0代码优先的MVC4 Web应用程序。

在Global.asax.cs中,我有一个引导程序,初始化Entity.Database,强制数据库被初始化并初始化成员资格的数据库。代码是这样的:

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,autoCreateTables: true);

因为我有一个问题,数据库没有创建。如何使用Entity Framework 5.0和Asp.Net MVC 4为数据库初始化一些默认用户?

解决方法

请查看 following article的推荐方法,使??用迁移种植您的数据库。

这里是步骤:

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

enable-migrations

>这将创建一个?/ 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",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" });
        }
    }
}

>在web.config中指定memebership和角色提供程序:

<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>

>在包管理器控制台中运行迁移:

update-database -verbose

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读