- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 SQL 查询:
select distinct "Customers"."CustomerId" as "CustomerId",
"Customers"."FcmRegistrationId" as "FcmRegistrationId",
"Customers"."FCMServerKey" as "FCMServerKey",
"Customers"."AppId" as "AppId"
from "CustomerEvents"
inner join "Customers" on "CustomerEvents"."CustomerId" = "Customers"."CustomerId"
where "Customers"."AdvertiserId" = 16 and "Data" #> '{inner_id}' = '4249699';
它在我的 SQL 编辑器客户端 (DataGrip) 中运行良好。但是当我将它与 C#
一起使用时,我从这个问题的标题中得到了错误。
Npgsql.PostgresException (0x80004005): 42883: operator does not exist: jsonb #> text
我会告诉你我的代码:
public class PartnerApiServices : IPartnerApiService
{
private readonly ApplicationDbContext _applicationDbContext;
public PartnerApiServices(ApplicationDbContext applicationDbContext)
{
_applicationDbContext = applicationDbContext;
}
public IQueryable<CustomerForPartnerApiServiceModel> GetCustomerBySearchField(Advertiser advertiser, string searchValue)
{
var rawSql = @"
select distinct ""Customers"".""CustomerId"" as ""CustomerId"",
""Customers"".""FcmRegistrationId"" as ""FcmRegistrationId"",
""Customers"".""FCMServerKey"" as ""FCMServerKey"",
""Customers"".""AppId"" as ""AppId""
from ""CustomerEvents""
inner join ""Customers"" on ""CustomerEvents"".""CustomerId"" = ""Customers"".""CustomerId""
where ""Customers"".""AdvertiserId"" = @AdvertiserId and ""Data"" #> @SearchField = @SearchValue";
var res = _applicationDbContext.BySearchFieldCustomerApiModels.FromSql(rawSql,
new NpgsqlParameter("SearchField", advertiser.SearchField),
new NpgsqlParameter("SearchValue", searchValue),
new NpgsqlParameter<int>("AdvertiserId", advertiser.AdvertiserId));
return res;
}
}
关于如何正确传递 SearchField
和 SearchValue
有什么想法吗?
最佳答案
要使用文本参数,而不是使用 #>
,请使用 #>>
。前者需要一个 jsonb
参数,而后者需要一个 text
参数 ( see the PostgreSQL docs )。
您的代码在 DataGrip 中运行的原因是 '{inner_id}'
是直接嵌入到您的 SQL 中的无类型文字,因此 PostgreSQL 将其隐式转换为 jsonb
。然而,当使用 Npgsql 的参数时,Npgsql 发送类型化的 text
参数(Npgsql 的参数(几乎)总是类型化的)),因此 PostgreSQL 提示不匹配。
关于c# - Npgsql.PostgresException (0x80004005) : 42883: operator does not exist: jsonb #> text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58305209/
我有一个 cmd.ExecuteReader() 的问题,我得到一个 Npgsql.PostgresException public void connectDB() {
当我尝试从 asp.net web api 插入用户时出现以下异常:Microsoft.EntityFrameworkCore.DbUpdateException:更新条目时出错。有关详细信息,请参阅
我有以下 SQL 查询: select distinct "Customers"."CustomerId" as "CustomerId", "Custo
使用 EF-Core for PostgresSQL,我有一个字段类型为 byte 的实体,但我决定将其更改为类型 byte[]。但是当我进行迁移时,在应用生成的迁移文件时,它引发了以下异常: Npg
我',运行我的测试套件并尝试使用枚举: CREATE TYPE dockind AS ENUM ('I', 'O', 'Q'); CREATE TABLE document ( doc_id
我使用 NLog 登录到 PostrgeSQL 数据库。 我创建了表格: CREATE TABLE "Data"."Logs" ( "ID" serial primary key, "
我使用 NLog 登录到 PostrgeSQL 数据库。 我创建了表格: CREATE TABLE "Data"."Logs" ( "ID" serial primary key, "
我在 Azure 上有一个用于测试目的的 postgresql 数据库。直到昨天为止都运行良好。它开始给出错误,例如 PostgresException: 28000: no pg_hba.conf
我是一名优秀的程序员,十分优秀!