如何配置Entity Framework以允許為PostgreSQL生成數據庫生成uuid(npgsql)?

asp.net asp.net-core entity-framework-core npgsql postgresql

我正在更新我們的dotnet核心項目,在後端而不是Microsoft SQL Server上使用PostgreSQL,並遇到了兩個使用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項目仍然抱怨同樣的錯誤。我在錯誤中看到它將.HasPostgresExtension(“uuid-ossp”)添加到OnModelCreating並且我已經在幾個地方嘗試但似乎無法弄清楚應該添加的具體位置。

一般承認的答案

根據Shay的指令 - 在更新到最新版本的Npgsql之後,uuid擴展錯誤現在消失了。以下是OnModelCreating對於其他人嘗試此操作的樣子片段:

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.HasPostgresExtension("uuid-ossp");
    }


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow