EF Core: update database error: column "PostalCode" of relation "City" already exists [PostgreSQL]

EF Core: update database error: column "PostalCode" of relation "City" already exists [PostgreSQL]

我有一个 class,在这个 class 中有“PostalCode”

public string CityName { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }

我正在创建迁移

add-migration AddPostalCode

然后我更新数据库

update-database

错误:

42701: column "PostalCode" of relation "City" already exists

因为 PostalCode 是手动添加到数据库中的城市 table。

不仅是PostalCode,还有其他手动添加的字段。 如何通过忽略这些字段来更新数据库。

您可以直接从 table 中删除邮政编码列,它也已分配

进入从 add-migration AddPostalCode 创建的迁移,并从 Up 部分删除将 PostalCode 列添加到 table.

的代码

但是,您不应手动向数据库添加 table 列,因此如果可能的话,请从数据库中删除该列,并让您​​的代码优先方法成为您添加列的唯一方式。 在使用 EF 和代码优先方法时手动添加列是非常糟糕的做法。

EF 6

如果您有现有架构,那么您应该使用

创建它的快照
Add-Migration InitialCreate –IgnoreChanges 

然后将您的更改添加到模型中,即将您的 PostalCode 添加到模型中,然后添加迁移和更新:

Add-Migration AddPostalCode
Update-Database

EF 核心

如果您使用的是 EF Core,则 -IgnoreChanges 不是可用参数,您需要使用空 Up() 方法创建初始迁移并将其应用于创建基线快照:

Add-Migration InitialCreate
Update-Database

将您的更改添加到您的模型 class,即将 PostalCode 添加到您的模型。然后为更改添加一个新的迁移并应用它:

Add-Migration AddPostalCode
Update-Database