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