C# 具有EntityFrameworkCore唯一列的Sqlite区分大小写。搜索也区分大小写
我在entityC# 具有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
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中的区分大小写搜索,请参见此问题: