Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/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
C# 具有EntityFrameworkCore唯一列的Sqlite区分大小写。搜索也区分大小写_C#_Sqlite_Entity Framework Core - Fatal编程技术网

C# 具有EntityFrameworkCore唯一列的Sqlite区分大小写。搜索也区分大小写

C# 具有EntityFrameworkCore唯一列的Sqlite区分大小写。搜索也区分大小写,c#,sqlite,entity-framework-core,C#,Sqlite,Entity Framework Core,我在entityUnitType中使用EntityFrameworkCore 2.0为SQLite设置了一个属性Name modelBuilder.Entity<UnitType>().HasIndex(t => t.Name).IsUnique(); 如何使其不区分大小写?SQLite的默认行为区分大小写。 要使列不区分大小写,需要使用COLLATE NOCASE 所以我们也需要添加这一行 modelBuilder.Entity<UnitType>().Prop

我在entity
UnitType
中使用EntityFrameworkCore 2.0为SQLite设置了一个属性
Name

modelBuilder.Entity<UnitType>().HasIndex(t => t.Name).IsUnique();

如何使其不区分大小写?

SQLite的默认行为区分大小写。

要使列不区分大小写,需要使用COLLATE NOCASE

所以我们也需要添加这一行

modelBuilder.Entity<UnitType>().Property(t => t.Name).HasColumnType("TEXT COLLATE NOCASE");
2) 将Like关键字与通配符一起使用,而不是Contain

db.Units.Where(w => EF.Functions.Like(w.Name, $"%{SearchText}%"));

另外,我在某个地方读到,将列转换为下限或上限将导致数据库引擎转换该列的所有值,这可能是大型数据集的性能瓶颈。因此我建议使用第二种方法。

SQLite的默认行为区分大小写。

要使列不区分大小写,需要使用COLLATE NOCASE

所以我们也需要添加这一行

modelBuilder.Entity<UnitType>().Property(t => t.Name).HasColumnType("TEXT COLLATE NOCASE");
2) 将Like关键字与通配符一起使用,而不是Contain

db.Units.Where(w => EF.Functions.Like(w.Name, $"%{SearchText}%"));

另外,我在某个地方读到,将列转换为下限或上限将导致数据库引擎转换该列的所有值,这可能是大型数据集的性能瓶颈。因此,我建议使用第二种方法。

对于SQLite中的区分大小写搜索,请参见此问题:对于SQLite中的区分大小写搜索,请参见此问题: