切换分支时如何解决Update-Database问题?
How to solve Update-Database issue when switching branch?
我有一个实体,在分支 A 中有一列为 int
。现在我切换到另一个分支 B。我在那里创建了一个迁移并将列更改为 varchar
和 运行 Update-Database
。现在,如果我再次切换到 Branch A。如果我在代码中看到列数据类型是 int
,但在数据库中,它的数据类型是 varchar
。但我希望它的数据类型是 int
。我什至无法从 Branch A 中删除此迁移,因为它是在 Branch B 中创建的。我只能看到解决此问题的一种方法是删除数据库和 运行 Update-Database
,但是这样做我会丢失所有数据。有没有更好的办法解决这个问题。
我正在使用 entity framework 核心 2.0.1。
我可以想到两个选项:
- 每个分支使用不同的数据库(可能是最好的主意,恕我直言)
- 在切换回分支 A 之前,un-apply 从数据库迁移
Update-Database name-of-previous-migration
例如,假设您有以下迁移:
20180214094058_Initial.cs
20180216100541_FirstMigration.cs
20180218185111_MigrationBranchB.cs
您可以 un-apply MigrationBranchB
和 Update-Database FirstMigration
(这将调用 MigrationBranchB
的 Down
方法)。
Reverting a migration
If you already applied a migration (or several migrations) to the database but need to revert it, you can use the same command to apply migrations, but specify the name of the migration you want to roll back to.
Update-Database LastGoodMigration
我有一个实体,在分支 A 中有一列为 int
。现在我切换到另一个分支 B。我在那里创建了一个迁移并将列更改为 varchar
和 运行 Update-Database
。现在,如果我再次切换到 Branch A。如果我在代码中看到列数据类型是 int
,但在数据库中,它的数据类型是 varchar
。但我希望它的数据类型是 int
。我什至无法从 Branch A 中删除此迁移,因为它是在 Branch B 中创建的。我只能看到解决此问题的一种方法是删除数据库和 运行 Update-Database
,但是这样做我会丢失所有数据。有没有更好的办法解决这个问题。
我正在使用 entity framework 核心 2.0.1。
我可以想到两个选项:
- 每个分支使用不同的数据库(可能是最好的主意,恕我直言)
- 在切换回分支 A 之前,un-apply 从数据库迁移
Update-Database name-of-previous-migration
例如,假设您有以下迁移:
20180214094058_Initial.cs
20180216100541_FirstMigration.cs
20180218185111_MigrationBranchB.cs
您可以 un-apply MigrationBranchB
和 Update-Database FirstMigration
(这将调用 MigrationBranchB
的 Down
方法)。
Reverting a migration
If you already applied a migration (or several migrations) to the database but need to revert it, you can use the same command to apply migrations, but specify the name of the migration you want to roll back to.
Update-Database LastGoodMigration