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。我需要取消针对该数据提供者创建的迁移并重新生成它。
在 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。我需要取消针对该数据提供者创建的迁移并重新生成它。