Npgsql uuid_generate_v4()

@zgcwkj  2022年04月19日

分類:

代碼 其它 

function uuid_generate_v4() does not exist

dotnet ef 的 Guid.NewGuid() 轉譯問題

從 Npgsql 官方文檔可以看到 Guid.NewGuid() 最終轉譯腳本會是 uuid_generate_v4() ,如果你的 pgsql 版本是 13+ 則轉譯的腳本則是 gen_random_uuid()。問題就在 Npgsql 怎麼識別數據庫的版本了。

pgsql版本:1650374685.png

官方文檔:1650374686.png

錯誤信息:1650374687.png

從圖片上描述是要 net5+ ,我使用的是 3.1 ,一開始我是以為升級 sdk 到 5+,就能自動使用新的函數來生成 SQL。最終測試時不行的。然後我通過代碼獲取 pgsql 版本一直是 12。我以為是我的數據庫版本有問題,升級 14 後還是識別為 12 。最終無奈提了個 issues,最終發現這個版本號是不會自動識別的。而是自己手動設定的。
.UseNpgsql(@"<connection string>", o => o.SetPostgresVersion(13, 0))
至此,問題解決了

issues:http://github.com/npgsql/efcore.pg/issues/2329



評論已關閉

Top