在 Mac (DotNet Core 2) 的 VS 上使用迁移 CLI 更新数据库
Update Database with Migrations CLI on VS for Mac (DotNet Core 2)
我在 VS 上为 Mac 创建了我的数据库模型,并使用终端创建迁移:
dotnet ef migrations add IntitialMigration
然后,我更新了我的数据库:
dotnet ef database update
但是在我更改了我的模型并创建了另一个迁移之后:
dotnet ef migrations add SecondMigration
并尝试更新数据库:
dotnet ef database update SecondMigration
我收到以下错误:
There is already an object named 'Emails' in the database.
我搜索了一下,找到了一个可能的解决方案:
Add-Migration SecondMigration -IgnoreChanges
但这只适用于 Windows 的 PMC。我正在为 Mac 使用 VS,所有命令都在终端上输入。有人知道如何在更改模型后使用迁移更新数据库吗?
我找到了解决方案。似乎在 Windows 的 VS 2017 上,当您添加迁移时,它会自动添加到解决方案中。但是,在 Mac 的 VS 上,这不会发生。您需要手动将每个新迁移添加到解决方案中。我创建了 InitialMigration 迁移并将其更新到数据库。出于某种我不知道为什么的原因,我从解决方案中删除了迁移并创建了新的 SecondMigration 迁移。这就是 InitialMigration 上的所有表也在 SecondMigration 上的原因。
如果您只是 运行 更新数据库,它也会尝试使用之前的迁移进行更新。 (这就是为什么它抱怨添加已经存在的内容)。您可以 运行 通过在命令后 运行 添加您想要的迁移名称来仅针对单个迁移进行更新。
我在 VS 上为 Mac 创建了我的数据库模型,并使用终端创建迁移:
dotnet ef migrations add IntitialMigration
然后,我更新了我的数据库:
dotnet ef database update
但是在我更改了我的模型并创建了另一个迁移之后:
dotnet ef migrations add SecondMigration
并尝试更新数据库:
dotnet ef database update SecondMigration
我收到以下错误:
There is already an object named 'Emails' in the database.
我搜索了一下,找到了一个可能的解决方案:
Add-Migration SecondMigration -IgnoreChanges
但这只适用于 Windows 的 PMC。我正在为 Mac 使用 VS,所有命令都在终端上输入。有人知道如何在更改模型后使用迁移更新数据库吗?
我找到了解决方案。似乎在 Windows 的 VS 2017 上,当您添加迁移时,它会自动添加到解决方案中。但是,在 Mac 的 VS 上,这不会发生。您需要手动将每个新迁移添加到解决方案中。我创建了 InitialMigration 迁移并将其更新到数据库。出于某种我不知道为什么的原因,我从解决方案中删除了迁移并创建了新的 SecondMigration 迁移。这就是 InitialMigration 上的所有表也在 SecondMigration 上的原因。
如果您只是 运行 更新数据库,它也会尝试使用之前的迁移进行更新。 (这就是为什么它抱怨添加已经存在的内容)。您可以 运行 通过在命令后 运行 添加您想要的迁移名称来仅针对单个迁移进行更新。