我想在Seed()方法中更改一些代码来创建数据,当我在Console中编写Update-Database
命令并按'Enter'时,结果我在数据库中的数据与更改前相同。
例如,当我必须从age = 15更改为age = 20.我保存更改并输入“Update-Database”命令。但是在数据库中我仍然年龄= 15.只有一个我知道并且工作的选项是删除迁移文件夹,在ConnectionStrings中更改数据库的名称,然后放置命令Enable-Migrations
,Add-migration
,{{1}但我认为这不是最佳解决方案。这是我的Seed()方法:
Update-Database
如何解决我的问题?
答案 0 :(得分:3)
您必须致电context.SaveChanges();
,否则数据将无法存储!
或者,您也可以在迁移期间更新数据库,如下所示:
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()