function uuid_generate_v4() does not exist
dotnet ef 的 Guid.NewGuid() 轉譯問題
從 Npgsql 官方文檔可以看到 Guid.NewGuid() 最終轉譯腳本會是 uuid_generate_v4() ,如果你的 pgsql 版本是 13+ 則轉譯的腳本則是 gen_random_uuid()。問題就在 Npgsql 怎麼識別數據庫的版本了。
pgsql版本:
官方文檔:
錯誤信息:
從圖片上描述是要 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
版權屬於:zgcwkj
本文鏈接:https://www.zgcwkj.com/archives/183.html
轉載聲明:請注明本文章的標題及內容的出處和聲明,謝謝
評論已關閉