Entity framework 6 实体框架集合初始值设定项和种子数据

Entity framework 6 实体框架集合初始值设定项和种子数据,entity-framework-6,Entity Framework 6,很难弄清楚为什么我的数据库无法种子: 以下是我的Global.asax代码: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.F

很难弄清楚为什么我的数据库无法种子:

以下是我的Global.asax代码:

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        AuthConfig.RegisterAuth();

        Database.SetInitializer(new DataContextInitializer());
        DataContext db = new DataContext();
        db.Database.Initialize(true);

        WebSecurity.InitializeDatabaseConnection("DataContext", "UserModels", "Id", "UserName", autoCreateTables: true);

    }
这是DataContextInitializer:

public class DataContextInitializer : CreateDatabaseIfNotExists<DataContext>
 {
    protected override void Seed(DataContext context)
    {
        if (!WebSecurity.Initialized)
        {
            WebSecurity.InitializeDatabaseConnection("DataContext", "UserModels", "Id", "UserName", autoCreateTables: true);
            WebSecurity.CreateUserAndAccount("admin", "12345");
        }

        var roles = (SimpleRoleProvider)Roles.Provider;
        var membership = (SimpleMembershipProvider)Membership.Provider;

        if (!roles.RoleExists("admin"))
        {
            roles.CreateRole("admin");
        }
        if (membership.GetUser("admin", false) == null)
        {
            membership.CreateUserAndAccount("admin", "12345");
        }
        if (!roles.GetRolesForUser("admin").Contains("admin"))
        {
            roles.AddUsersToRoles(new[] { "admin" }, new[] { "admin" });
        }
    }
}
公共类DataContextInitializer:CreateDatabaseIfNotExists
{
受保护的覆盖无效种子(DataContext上下文)
{
如果(!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection(“DataContext”、“UserModels”、“Id”、“UserName”、autoCreateTables:true);
CreateUserAndAccount(“admin”,“12345”);
}
var roles=(SimpleRoleProvider)roles.Provider;
var membership=(SimpleMembershipProvider)membership.Provider;
如果(!roles.RoleExists(“admin”))
{
角色。创建角色(“管理员”);
}
if(membership.GetUser(“admin”,false)==null)
{
成员资格。CreateUserAndAccount(“管理员”、“12345”);
}
如果(!roles.GetRolesForUser(“admin”)包含(“admin”))
{
roles.AddUsersToRoles(新[]{“admin”},新[]{“admin”});
}
}
}

调试时,我得到的SqlException是“数据库中已经有一个名为…的对象”。知道为什么会发生这种情况吗?

以下是我采取的步骤:

  • 已将种子逻辑复制到Migrations Configuration.cs文件
  • 已从项目中排除旧迁移
  • 在包控制台管理器中,执行了添加迁移并为其命名
  • 然后在确保WebMatrix.WebData引用属性具有“CopyLocal=true”后运行update database-verbose-force
我希望这对某人有帮助