Npgsql:Database.Migrate 和 Database.EnsureCreated 之间与 Guid 的差异

Npgsql: Discrepency with Guids between Database.Migrate and Database.EnsureCreated

在 netstandard20 项目中,我使用的是 Npgsql.EntityFrameworkCore.PostgreSQL 3.1.0,但在使用 Guid 作为我的主键类型时遇到了问题。如果我使用 Database.EnsureCreated() 创建模式,主键列将创建为数据类型 uuid。除了将其更改为使用 Database.Migrate() 创建所有数据类型为 text 的主键列外,一切都一样,然后我得到异常: Npgsql.PostgresException : 42883: operator does not exist: text = uuid 当我尝试执行任何操作时。

我的项目中有一个创建初始数据库的迁移。在该迁移以及自动生成的 "context model snapshot" 中,主键列均定义为 Guid.

我需要既使用 Database.Migrate() 方法来创建数据库,也需要它创建 Guid 主键列作为 uuid。我怎样才能确保它正确地创建列?

我在发布问题后找到了 this issue and response。这让我得到了正确的答案,即当我创建迁移时我使用的是 sqlite。我需要取消针对该数据提供者创建的迁移并重新生成它。