使用 EF Core 5 查询 Postgres Json 字段

2023-12-10

我有下表定义

  [Table("MyTable")]
  public class MyTable: BaseEntity
  {
    [Required]
    public string A{ get; set; }

    [Required]
    [Column(TypeName = "json")]
    public string B{ get; set; }
  }

B 列如下所示:

{"Data": [{"Id":"b8a3cbbc-a4d6-4697-8a0b-cb1d15be179d"}]} (aside from Id there are other properties but for brevity I removed them)

在实体框架中,我想匹配所有 MyTable,其中 B 中的 Id 是某个值并且 A 中的 Id 具有某个值。我尝试了很多事情并遇到了很多错误。如何添加下面的代码来达到我想要的效果?

var results = 
   _repository.Get<MyTable>(_ => _.A == "Something" && _.B = ???);

您可以使用 ”EF.Functions.JsonContains“函数,但是B列需要是“jsonb“ 键入而不是 ”json".

    [Required]
    [Column(TypeName = "jsonb")]
    public string B { get; set; }

Example:

var search = "[{\"Id\": \"b8a3cbbc-a4d6-4697-8a0b-cb1d15be179d\"}]";
var results = _context.MyTable2
      .Where(_ => _.A == "Something" 
                    && EF.Functions.JsonContains(_.B, search));

类似的答案HERE

此外,您还可以输入查询并使用 Dapper。

Example:

 with temp AS(
  select t."Id", t."A", json_array_elements(t."B"->'Data') as B1 from "MyTable"  t
  )
  select * from temp t
  where 
  t."A"='Something' and
  t.b1->>'Id'='b9a3cbbc-a4d6-4697-8a0b-cb1d15be179a'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 EF Core 5 查询 Postgres Json 字段 的相关文章

  • 如何在postgres中获取数组大小大于1的数组

    我有一个看起来像这样的表 val fkey num 1 1 1 1 2 1 1 3 1 2 3 1 我想要做的是返回一组行 其中值按 val 分组 并带有一个 fkey 数组 但仅限于 fkey 数组大于 1 的情况 因此 在上面的示例中
  • UseRowNumberForPaging 不是有效的

    我在用着 Microsoft EntityFrameworkCore SqlServer 1 0 0 rc2 final with SQL 2008根据谷歌上找到的一些结果 我只需添加选项 UseRowNmberForPaging 当创建一
  • 不能为实体类型指定过滤表达式。过滤器只能应用于层次结构中的根实体类型

    我在添加新迁移时遇到此错误 无法为实体类型 Babysitter 指定筛选表达式 e gt Not e IsDeleted 过滤器只能应用于层次结构中的根实体类型 我正在做的是 我有 2 个类 Babysitter 和 Parent 它们都
  • Entity Framework Core 多对多更改导航属性名称

    我有一个名为 LogBookSystemUsers 的表 我想在 EF Core 5 中设置多对多功能 我几乎可以正常工作 但问题是我的 ID 列被命名为SystemUserId and LogBookId但是当 EF 进行连接时它会尝试使
  • 如何获取 PostgreSQL 中表上所有索引的列名列表?

    我有这个查询来获取表上的索引列表 SELECT ns nspname as schema name tab relname as table name cls relname as index name am amname as index
  • SQL 用随机数据填充表

    我有一个包含两个字段的表 id UUID 是主键并且 描述 var255 我想用SQL语句插入随机数据 我希望这个描述是随机的 PS 我正在使用 PostgreSQL 我不确定这是否符合 随机描述 的要求 也不清楚您是否想要生成完整的数据
  • 在 PostgreSQL 中存储图像

    好吧 我正在开发一个应用程序 该应用程序将使用运行 PostgreSQL 的 Linux 后端向 Windows 机器提供图像 前端用 C NET 编写 尽管前端应该不重要 我的问题是 在 Postgres 中存储图像的最佳方法是什么 每张
  • 微服务中的关系型数据库

    我有一个整体应用程序 当前使用 PostgreSQL 数据库 并且模式的设置与您对大多数关系数据库的期望相同 其中各种表数据通过 FK 链接回用户user id 我正在尝试了解有关微服务的更多信息 正在尝试将我的 python API 迁移
  • kubernetes 如何将 pod 暴露给集群机器之外的东西?

    我读了以下内容Kubernetes 文档 https kubernetes io docs tutorials kubernetes basics expose expose intro 这导致以下 yaml 在集群中运行 postgres
  • 将表从 postgres 数据库同步/导入到 elasticsearch 的正确方法是什么?

    我想将 postgres 数据库中的一些表导入到 Elastic search 中 并使这些表与 elastic search 中的数据保持同步 我看过 udemy 上的课程 还与一位对此问题有丰富经验的同事进行了交谈 以了解最好的方法是什
  • PostgreSQL 中的仅索引扫描和位图索引扫描有什么区别?

    在我的查询中 我只想调用具有精确 where 条件的数据 这些where条件是在index html中创建的 Bu 解释显示了位索引扫描 我不明白为什么 我的查询如下所示 Select r spend r date from metadat
  • 我截断了一个表。我如何取回数据?

    在我的 postgresql 数据库中 不幸的是我截断了表mail group 并且该表已从数据库中删除 如何找回该表 请帮助我 等待回复 Thanks 其他有同样情况的人 立即地停止你的数据库pg ctl stop m immediate
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • 如果存在具有唯一值的行,则更新,否则插入

    我有一个 URL 表 他们包含 id int 主键 url 字符不同 唯一 内容特征各不相同 最后分析日期 我想创建触发器或其他东西 规则可能是 因此每次我从 java 程序中进行插入时 如果存在具有此类 URL 的行 它就会更新一些单行
  • 如何使 Postgres Copy 忽略大 txt 文件的第一行

    我有一个相当大的 txt 文件 9gb 我想将此 txt 文件加载到 postgres 中 第一行是标题 后面是所有数据 如果我直接 postgres COPY 数据 标头将导致数据类型与我的 postgres 表不匹配的错误 因此我需要以
  • psycopg2 - 无密钥连接

    我正在尝试通过以下方式同时将项目插入到 postgres 表中ThreadedConnectionPool 但我不断得到psycopg2 pool PoolError trying to put unkeyed connection 不知道
  • EF Core 返回 null 关系,直到直接访问

    我有一些如下所示的模型 public class Mutant public long Id get set Relations public long OriginalCodeId get set public virtual Origi
  • 撤销角色对 postgres 数据库的访问权限

    我为某个用户创建了一个单独的角色 newrole 和新模式 newschema 该用户应该只执行一些存储的函数 我已设法撤销对当前数据库的模式 public 的访问权限 以 newrole 身份登录 我仍然可以访问 postgres 数据库
  • 带有 Entity Framework Core 的 NoSQL [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要 Entity Framework Core 的任何 NoSQL 提供程序 我可以将 EF Co
  • SQLAlchemy 在 MySQL 上使用什么列类型作为“文本”?

    我的总体用例是试图确定我是否可以编写一个与数据库无关的 至少支持 Postgres 和 MySQL 存储一些大数据作为原始文本 认为 500MB 作为粗略的理论上限 基于这个答案 https stackoverflow com a 2557

随机推荐