在没有事务的情况下运行 EF 核心迁移?

Posted

技术标签:

【中文标题】在没有事务的情况下运行 EF 核心迁移?【英文标题】:Run an EF core migration without a transaction? 【发布时间】:2021-10-22 01:25:42 【问题描述】:

我有一个 Postgres 数据库,我在其中使用 Postgres 类型的枚举。我遇到的问题是,当我通过迁移添加枚举时,我收到一条错误消息,指出它不能在事务中运行。这意味着如果我不得不重新创建一个数据库,它总是会失败,因为迁移永远不会正确运行。

所以我的问题是,有没有办法在实体框架迁移中关闭事务?或者,如果可以,您是否愿意?

为了清楚起见,这里有一个链接,指向我遇到的关于特定失败迁移的问题。

ALTER TYPE ... ADD cannot run inside a transaction block - Entity Framework

谢谢

【问题讨论】:

【参考方案1】:

我发现 .Sql 命令有一个重载,您可以在其中指定 true 来禁止事务。

migrationBuilder.Sql("your sql statement", true);

【讨论】:

以上是关于在没有事务的情况下运行 EF 核心迁移?的主要内容,如果未能解决你的问题,请参考以下文章

无法在运行时设置 DbContext 连接字符串并将项目与应用程序分开的情况下运行 EF 迁移

如何运行配置类迁移的 Seed() 方法

EF6 事务

ASP - 在启动时核心迁移 EF Core SQL DB

核心数据在没有堆栈的情况下工作

如何在没有工匠的情况下运行 laravel 迁移(使用代码)