如何在Seed()方法

时间:2016-06-22 10:50:03

标签: c# entity-framework

我想在Seed()方法中更改一些代码来创建数据,当我在Console中编写Update-Database命令并按'Enter'时,结果我在数据库中的数据与更改前相同。

例如,当我必须从age = 15更改为age = 20.我保存更改并输入“Update-Database”命令。但是在数据库中我仍然年龄= 15.只有一个我知道并且工作的选项是删除迁移文件夹,在ConnectionStrings中更改数据库的名称,然后放置命令Enable-MigrationsAdd-migration,{{1}但我认为这不是最佳解决方案。这是我的Seed()方法:

Update-Database

如何解决我的问题?

2 个答案:

答案 0 :(得分:3)

您必须致电context.SaveChanges();,否则数据将无法存储!

  • 如果您有多个迁移级别,则必须使用DbSet.AddOrUpdate()
  • 或者,您也可以在迁移期间更新数据库,如下所示:

    public partial class MigrationFile : DbMigration
    {
        public override void Up()
        {
            // Add or update the data
            Sql("UPDATE ...");
            Sql("INSERT ...");
        }
    
        public override void Down()
        {
            // Remove Data
        }
    }
    

答案 1 :(得分:1)

您需要添加else语句来编辑已存在的用户:

var user = context.Users.Where(u => u.UserName == "Admin");
if (user == null))
{
    user = new User { UserName = "Admin", Age = 115 };
    var adminresult = manager.Create(user, "12345678");

    if (adminresult.Succeeded)
        manager.AddToRole(user.Id, "Admin");
}
else
{
    user.Age = 20;
}
context.SaveChanges()