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://blog.zgcwkj.cn/archives/183.html
转载声明:请注明本文章的标题及内容的出处和声明,谢谢
评论已关闭