如何使用 .net core entity framework 迁移更新表(而不是重新创建它们)
How to update tables (not recreate them) using .net core entity framework migration
我已经连接到一个没有任何身份的现有 SQL 数据库,例如没有 aspNetUser table 等。我已经使用自定义登录名 class 添加了这些,例如这个
public class UserLogin : IdentityUser
{
public int LanguageId { get; set; }
public string HQ_PRM_Id { get; set; }
}
然后我生成了一个迁移来创建这样的 tables(我只是称之为身份)
"dotnet ef migrations add Identity"
然后我运行迁移使用
"dotnet ef database update Identity"
这创造了 table 一切都很好。但是,我忘记为我添加的用户 class 添加名字和姓氏。问题是当我 运行 我的新迁移时它说
数据库中已经有一个名为 'AspNetRoles' 的对象。
如何告诉迁移更新模式而不是尝试重新创建 tables?否则我必须先手动删除对象..这意味着丢失数据。
谢谢
在开发过程中,模型经常变化,这些模型(代表数据库表)与表本身不同步。迁移的作用是保持数据库和模型同步,因此每当您对模型进行更改时,您都必须创建一个新的迁移以增量更新数据库模式。
初始迁移
public class UserLogin : IdentityUser
{
public int LanguageId { get; set; }
public string HQ_PRM_Id { get; set; }
}
dotnet ef migrations add Identity
- 此命令创建一个名为 Identity
的新迁移
dotnet ef database update Identity
- 此命令 运行s 最多迁移并包括名称为 "Identity"
的迁移
第二次迁移
public class UserLogin : IdentityUser
{
public int LanguageId { get; set; }
public string HQ_PRM_Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
dotnet ef migrations add AddNames
- 此命令创建一个名为 AddNames 的新迁移,EF 应该将其识别为对现有表的更新(因此迁移应该只是更新)
dotnet ef database update AddNames
- 这将 运行 AddNames 迁移
我绝对建议查看有关该主题的 MS docs
我已经连接到一个没有任何身份的现有 SQL 数据库,例如没有 aspNetUser table 等。我已经使用自定义登录名 class 添加了这些,例如这个
public class UserLogin : IdentityUser
{
public int LanguageId { get; set; }
public string HQ_PRM_Id { get; set; }
}
然后我生成了一个迁移来创建这样的 tables(我只是称之为身份)
"dotnet ef migrations add Identity"
然后我运行迁移使用
"dotnet ef database update Identity"
这创造了 table 一切都很好。但是,我忘记为我添加的用户 class 添加名字和姓氏。问题是当我 运行 我的新迁移时它说
数据库中已经有一个名为 'AspNetRoles' 的对象。
如何告诉迁移更新模式而不是尝试重新创建 tables?否则我必须先手动删除对象..这意味着丢失数据。
谢谢
在开发过程中,模型经常变化,这些模型(代表数据库表)与表本身不同步。迁移的作用是保持数据库和模型同步,因此每当您对模型进行更改时,您都必须创建一个新的迁移以增量更新数据库模式。
初始迁移
public class UserLogin : IdentityUser
{
public int LanguageId { get; set; }
public string HQ_PRM_Id { get; set; }
}
dotnet ef migrations add Identity
- 此命令创建一个名为 Identity
dotnet ef database update Identity
- 此命令 运行s 最多迁移并包括名称为 "Identity"
第二次迁移
public class UserLogin : IdentityUser
{
public int LanguageId { get; set; }
public string HQ_PRM_Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
dotnet ef migrations add AddNames
- 此命令创建一个名为 AddNames 的新迁移,EF 应该将其识别为对现有表的更新(因此迁移应该只是更新)
dotnet ef database update AddNames
- 这将 运行 AddNames 迁移
我绝对建议查看有关该主题的 MS docs