Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 5数据库更新_C#_Asp.net Mvc_Entity Framework Migrations - Fatal编程技术网

C# ASP.NET MVC 5数据库更新

C# ASP.NET MVC 5数据库更新,c#,asp.net-mvc,entity-framework-migrations,C#,Asp.net Mvc,Entity Framework Migrations,我正在初始化IdentityConfig.cs文件中的网站用户和角色数据,当我添加了一个新模型,然后使用“代码优先添加迁移和更新数据库”命令将其映射到数据库时,我得到了一个空数据库: public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext> { protected override void Seed(ApplicationDbContext c

我正在初始化
IdentityConfig.cs
文件中的网站用户和角色数据,当我添加了一个新模型,然后使用“代码优先添加迁移和更新数据库”命令将其映射到数据库时,我得到了一个空数据库:

public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
    protected override void Seed(ApplicationDbContext context)
    {
        InitializeIdentityForEF(context);
        base.Seed(context);
    }

    // Create User=aadmin2018@mail.com with Admin2018@mail.com in the Admin role
    public static void InitializeIdentityForEF(ApplicationDbContext db)
    {
        var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
        var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
        const string name = "admin2018@mail.com";
        const string password = "Admin2018@mail.com";
        const string roleName = "Admin";

        // Create role Admin if it does not exist
        var role = roleManager.FindByName(roleName);

        if (role == null)
        {
            role = new IdentityRole(roleName);
            var roleresult = roleManager.Create(role);
        }

        var user = userManager.FindByName(name);

        if (user == null)
        {
            user = new ApplicationUser
            {
                UserName = name,
                Email = name,
                FirstName = "Admin",
                LastName = "Admin",
                DateOfBirth = new DateTime(2015, 1, 1),
                Address = new Address
                {
                    AddressLine1 = "1 Admin Street",
                    Town = "Town",
                    County = "County",
                    Postcode = "PostCode"
                }
            };

            var result = userManager.Create(user, password);
            result = userManager.SetLockoutEnabled(user.Id, false);
        }

        // Add user admin to Role Admin if not already added
        var rolesForUser = userManager.GetRoles(user.Id);

        if (!rolesForUser.Contains(role.Name))
        {
            var result = userManager.AddToRole(user.Id, role.Name);
        }

        // Create users role
        const string userRoleName = "Users";
        role = roleManager.FindByName(userRoleName);

        if (role == null)
        {
            role = new IdentityRole(userRoleName);
            var roleresult = roleManager.Create(role);
        }
    }
}
公共类应用程序BinInitializer:DropCreateDatabaseIfModelChanges
{
受保护的重写无效种子(ApplicationDbContext上下文)
{
InitializeIdentityFore(上下文);
种子(上下文);
}
//创建用户=aadmin2018@mail.com具有Admin2018@mail.com在管理员角色中
公共静态void initializedEntityForef(ApplicationDbContext数据库)
{
var userManager=HttpContext.Current.GetOwinContext().GetUserManager();
var rolemager=HttpContext.Current.GetOwinContext().Get();
常量字符串名称=”admin2018@mail.com";
常量字符串密码=”Admin2018@mail.com";
常量字符串roleName=“Admin”;
//如果角色Admin不存在,则创建该角色
var role=rolemager.FindByName(roleName);
如果(角色==null)
{
角色=新的识别码(roleName);
var roleresult=rolemanger.Create(角色);
}
var user=userManager.FindByName(名称);
if(user==null)
{
用户=新应用程序用户
{
用户名=名称,
Email=姓名,
FirstName=“Admin”,
LastName=“Admin”,
DateOfBirth=新的日期时间(2015,1,1),
地址=新地址
{
AddressLine1=“1行政街”,
Town=“Town”,
County=“County”,
Postcode=“Postcode”
}
};
var result=userManager.Create(用户,密码);
结果=userManager.SetLockoutEnabled(user.Id,false);
}
//将用户管理员添加到角色管理员(如果尚未添加)
var rolesForUser=userManager.GetRoles(user.Id);
如果(!rolesForUser.Contains(role.Name))
{
var result=userManager.AddToRole(user.Id,role.Name);
}
//创建用户角色
常量字符串userRoleName=“Users”;
role=rolemager.FindByName(userRoleName);
如果(角色==null)
{
role=新的IdentityRole(userRoleName);
var roleresult=rolemanger.Create(角色);
}
}
}

我应该对代码做哪些更改,以便这些数据返回数据库?

迁移的Up()代码为空?您的ApplicationDbContext是否从IdentityDbContext继承?是的,我的ApplicationDbContext从IdentityDbContext继承,我的迁移的Up()代码包含所有表的创建,并且它们在数据库中为空,没有上面发布的代码段中指定的值。是否尝试删除数据库?初始化器Seed()仅在您更改模型或没有数据库时运行。每次更新数据库时都会运行不同的Seed()迁移方法。能否指定要引用的文件/文件夹的名称。Seed将仅在创建数据库时运行,而不会更新数据库。看这里