如何解决如何将PostgreSQL反向函数与EFCore
我想使用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}%");
引发错误
消息”:“ LINQ表达式'DbSet \ r \ n。其中(c => c.Phone \ r \ n .Reverse()。ToString()== __Format_0)'无法翻译。可以采用以下形式重写查询: 翻译,或通过插入 调用AsEnumerable(),AsAsyncEnumerable(),ToList()或 ToListAsync()。有关详情,请参见https://go.microsoft.com/fwlink/?linkid=2101038 更多信息。
是否可以使用PostgreSQL / Npgsql提供程序为实体框架核心创建反向函数查询。
解决方法
不幸的是,.NET中没有简单/惯用的方式来表示字符串反转;请注意,c.Phone.Reverse().ToString()
不会不返回已反转的电话,因为它在从Reverse返回的IEnumerable上调用ToString。
我为即将推出的版本5.0添加了EF.Functions.Reverse-请参见https://github.com/npgsql/efcore.pg/pull/1496。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。