postgresql - 使用 EF Core 3.0 的 postgis 调用 postgresql 10.10 数据库的 npgsql 存储函数时出现问题
问题描述
我有一个带有文本格式输入 json 参数的函数,我将其转换为 json 本身。此函数以文本格式返回另一个 Json。当我使用另一个函数测试从 PGAdmin 4 调用此函数时,它工作正常,但如果我从 EF Core 3.0 调用该函数,我会收到此错误:
Error Name: invalid input syntax for type json
Error State: 22P02
Error Context: JSON data, line 1: {"ErrorMsg":"Error Name: type "geometry...
PL/pgSQL function miguel.searchjson(text) line 87 at assignment
SQL statement "SELECT * from miguel.searchJSON(param)"
PL/pgSQL function miguel.test_searchjson() line 19 at SQL statement
对于没有返回文本的 Json 的其他函数,我在执行中没有问题。我以这种方式调用我的函数:
var res = _context.JSResultSearch.FromSqlRaw("SELECT miguel.test_searchjson() as jsresult");
坦率地说,我已经对这个话题感到绝望。如有任何帮助,我将不胜感激。
解决方案
似乎您正在尝试调用一个返回简单文本的函数,并期望 EF Core 为您读出它(尽管这不清楚,因为您在 JSResultSearch 上调用 FromSqlRaw,我们不知道那是什么)。EF Core 不支持为您加载简单的非实体值 - 请参阅https://github.com/aspnet/EntityFrameworkCore/issues/11624。
但是,EF Core 在这里没有太大价值,只是简单地下降到 ADO.NET 或使用 Dapper。
推荐阅读
- android - 找不到结果时,搜索栏会产生错误的内容
- javascript - 何时使用多个 then 语句与将代码块放入一个 then 语句
- linux - “sudo perf script -g python”命令导致 RHEL8.2 linux 中的分段错误
- python - 替换 3 行字符串
- java - 在 Apache Solr 中如何检索已删除的文档
- javascript - 如果我只指定一个日期,Javascript new Date 使用什么默认时间?
- python - [Python][Kivy] 内容被隐藏在可滚动区域
- database - 寻找 ETCD-Metrics 解释
- powerbuilder - 如何查找应用程序版本
- javascript - 动作被调用但未命中