【问题标题】:How can I use postgresql reverse function with EFCore如何在 EFCore 中使用 postgresql 反向函数
【发布时间】:2020-09-11 03:42:58
【问题描述】:

我想使用 EFCore 创建一个 SQL 查询,如下所示。

FROM "Customers" AS c
            where reverse("Phone") LIKE reverse('%#####');
      ORDER BY 1
      LIMIT @__p_2 OFFSET @__p_1

我正在尝试使用 LINQ,但此代码不起作用,而且我在 EF.Functions 中找不到反向方法

query = query.Where(c => c.Phone.Reverse().ToString() == $"{phone}%");

抛出错误

Message": "LINQ 表达式 'DbSet\r\n .Where(c => c.Phone\r\n .Reverse().ToString() == __Format_0)' 无法翻译。要么重写查询形式, 翻译,或通过插入显式切换到客户端评估 调用 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync()。见https://go.microsoft.com/fwlink/?linkid=2101038 更多信息。

有没有办法使用 PostgreSQL/Npgsql 提供程序为 Entity Framework Core 创建反向函数查询。

【问题讨论】:

    标签: postgresql entity-framework-core npgsql


    【解决方案1】:

    不幸的是,在 .NET 中没有简单/惯用的方式来表达字符串反转;请注意,c.Phone.Reverse().ToString() 确实返回反向电话,因为它在从 Reverse 返回的 IEnumerable 上调用 ToString。

    我为即将发布的 5.0 版添加了 EF.Functions.Reverse - 请参阅 https://github.com/npgsql/efcore.pg/pull/1496

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2012-09-30
      相关资源
      最近更新 更多