如何配置 Entity Framework 以允许数据库为 PostgreSQL (npgsql) 生成 uuid?
How do I configure Entity Framework to allow database-generate uuid for PostgreSQL (npgsql)?
我正在更新我们的 dotnet 核心项目以在后端使用 PostgreSQL 而不是 Microsoft SQL 服务器,并且遇到了两个表使用 GUID 作为数据类型的情况。
错误
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Property CommentID on type is a database-generated uuid, which requires the PostgreSQL uuid-ossp extension. Add .HasPostgresExtension("uuid-ossp") to your context's OnModelCreating.
经过一些谷歌搜索后,我意识到我必须启用 uuid 扩展(不确定这是否可以以某种方式自动执行),然后在 pgAdmin 中成功生成了一个 uuid。
CREATE EXTENSION "uuid-ossp";
SELECT uuid_generate_v4();
不幸的是,我的 dotnet 项目仍在抱怨同样的错误。我在错误中看到它说 add .HasPostgresExtension("uuid-ossp") to OnModelCreating 我已经在几个地方尝试过但似乎无法弄清楚具体应该在哪里被添加。
按照 Shay 的说明 - 更新到最新版本的 Npgsql 后,uuid 扩展错误现在消失了。以下是 OnModelCreating 的片段,供其他人试用:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.HasPostgresExtension("uuid-ossp");
}
我正在更新我们的 dotnet 核心项目以在后端使用 PostgreSQL 而不是 Microsoft SQL 服务器,并且遇到了两个表使用 GUID 作为数据类型的情况。
错误
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Property CommentID on type is a database-generated uuid, which requires the PostgreSQL uuid-ossp extension. Add .HasPostgresExtension("uuid-ossp") to your context's OnModelCreating.
经过一些谷歌搜索后,我意识到我必须启用 uuid 扩展(不确定这是否可以以某种方式自动执行),然后在 pgAdmin 中成功生成了一个 uuid。
CREATE EXTENSION "uuid-ossp";
SELECT uuid_generate_v4();
不幸的是,我的 dotnet 项目仍在抱怨同样的错误。我在错误中看到它说 add .HasPostgresExtension("uuid-ossp") to OnModelCreating 我已经在几个地方尝试过但似乎无法弄清楚具体应该在哪里被添加。
按照 Shay 的说明 - 更新到最新版本的 Npgsql 后,uuid 扩展错误现在消失了。以下是 OnModelCreating 的片段,供其他人试用:
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.HasPostgresExtension("uuid-ossp");
}