【问题标题】:Can Entity Framework (LINQ) select rows based on JSON where clause?Entity Framework (LINQ) 可以根据 JSON where 子句选择行吗?
【发布时间】:2020-10-16 20:39:59
【问题描述】:

我在 JSON 数据的 SQL 数据库表中有一个列。我可以使用 Entity Framework 和 LINQ 根据 SQL JSON 列中的字段/值进行查询和过滤吗?

我正在使用 SQL 2016、VS 2017、EF Core 2.0、.NET Core 2.0。

【问题讨论】:

  • 这篇文章说Sql Server可以查询JSON值列但是LINQ不能:codeproject.com/Articles/1166099/…
  • Brian,Code Project 上的参考资料很有帮助。因为我的 JSON 实际上对于每一行都可能不同,所以使用 .FromSql(利用 SQL JSON_VALUE)通过 T-SQL 解决这个问题似乎是最好的选择。

标签: sql json entity-framework linq .net-core


【解决方案1】:

Brian 提供了一些指向一些不错选择的链接。我认为这些仍然需要您完全接收 SQL 数据,然后在 .NET 代码中应用过滤;我真的很想在 SQL 服务器端进行过滤,避免拉回所有行,然后进行过滤。

此外,由于我的 JSON 数据的每一行可能具有不同的属性,因此最好使用 SQL Server 进行过滤。

根据 Brian 的代码项目参考,我将选择在 LINQ 中使用 SQL 语句:

var blogs = _context.Blogs
  .FromSql<Blog>(@"SELECT * FROM Blogs WHERE JSON_VALUE(Owner, '$.Name') = {0}", Owner)
  .ToList();

【讨论】:

  • 有没有办法检查SQL中JSON数据的数组中是否存在项目?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多