EF执行Update-Database时尝试重建已存在的__EFMigrationsHistory表问题
EF Core PostgreSQL 自定义Schema下迁移报错问题
操作流程与问题现象
采用空数据库+Code-First模式,已定义好模型和
DbContext执行初始迁移命令:
Add-Migration InitialMigration -OutputDir MigrationsPostgres -Context DbContextDevelopmentPostgres生成包含所有表的初始迁移文件后,执行数据库更新:
Update-Database -Context DbContextDevelopmentPostgres更新过程正常,所有表(包括存储在自定义Schema下的
__EFMigrationsHistory)创建完成。为某模型新增属性后,生成新迁移:
Add-Migration TestMigration -OutputDir MigrationsPostgres -Context DbContextDevelopmentPostgres成功生成仅包含模型变更的迁移文件。
执行更新命令时(注:命令中Context名称存在拼写错误,应为
DbContextDevelopmentPostgres):Update-Database -Context GeophysicsDbContextDevelopmentPostgres出现报错,输出内容如下:
SELECT EXISTS ( SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public' AND c.relname='__EFMigrationsHistory' ) SELECT EXISTS ( SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public' AND c.relname='__EFMigrationsHistory' ) Failed executing DbCommand (10ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] CREATE TABLE "__EFMigrationsHistory" ( "MigrationId" character varying(150) NOT NULL, "ProductVersion" character varying(32) NOT NULL, CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId") );提示
__EFMigrationsHistory表已存在,但实际该表存储在自定义Schema下,EF Core默认仅检查publicSchema,因public下无此表,遂尝试创建导致冲突。
使用版本
Microsoft.EntityFrameworkCore 6.0.25Microsoft.EntityFrameworkCore.Tools 6.0.25Npgsql.EntityFrameworkCore.PostgreSQL 6.0.22
补充说明
曾在Oracle中使用相同方法(低版本EF Core),未出现此类问题。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

