Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EF Core postgresql字符串比较(不区分大小写)_Postgresql_Asp.net Core_Entity Framework Core - Fatal编程技术网

EF Core postgresql字符串比较(不区分大小写)

EF Core postgresql字符串比较(不区分大小写),postgresql,asp.net-core,entity-framework-core,Postgresql,Asp.net Core,Entity Framework Core,我正在使用EF Core 5。因为Postgresql不区分大小写 下面是两种方法 方法#1: 方法2: 我需要检查表中是否存在给定的代码(区分大小写)。上述两种方法中哪一种最适合/最快,或者EF Core 5中是否有其他方法 谢谢我最近和你遇到了同样的问题。以下是我尝试过的一些选择; 1-数据库或实体类的每个属性上不区分大小写的排序规则。 2-Citext类型 3-我喜欢 每个linq查询上的4-ToLower()方法 1有很多缺点,比如不能在查询中使用各种sql函数(例如,ILIKE,STR

我正在使用EF Core 5。因为Postgresql不区分大小写

下面是两种方法

方法#1:

方法2:

我需要检查表中是否存在给定的代码(区分大小写)。上述两种方法中哪一种最适合/最快,或者EF Core 5中是否有其他方法


谢谢

我最近和你遇到了同样的问题。以下是我尝试过的一些选择; 1-数据库或实体类的每个属性上不区分大小写的排序规则。 2-Citext类型 3-我喜欢 每个linq查询上的4-ToLower()方法

1有很多缺点,比如不能在查询中使用各种sql函数(例如,ILIKE,STRPOS(Contains()…)。这是因为不能在非确定性排序规则中使用这些函数

2有一些性能问题(你可以从文档中阅读,我读了很多)

3 ILIKE不比“=”好检查性能

4我个人选择这一个是因为它最适合我。另外,如果您需要为需要不区分大小写的列编制索引,您可以使用函数(较低的(列名称))编制索引

 var existingEntity = await _unitOfWork.Banks.FirstOrDefautAsync(x => (x.Code.ToLower() == bank.Code.ToLower()));
 var existingEntity = await _unitOfWork.Banks.FirstOrDefautAsync(x => (EF.Functions.ILike(x.Code, bank.Code));