PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Inti Kerangka Entitas - Berisi apakah peka huruf besar-kecil atau tidak peka huruf besar-kecil?

Dulu kasus untuk versi EF core yang lebih lama. Sekarang string.Contains peka huruf besar/kecil, dan sebagai contoh untuk sqlite, peta ini dipetakan ke fungsi sqlite `instr()' (saya tidak tahu untuk postgresql).

Jika Anda ingin membandingkan string dengan cara yang tidak peka huruf besar/kecil, Anda memiliki DbFunctions untuk melakukan tugas tersebut.

context.Counties.Where(x => EF.Functions.Like(x.Name, $"%{keyword}%")).ToList();

PERBARUI ke @Gert:

Sebagian dari asumsi dalam pertanyaan tidak benar. string.Contains TIDAK diubah menjadi LIKE expression meskipun itu digunakan untuk menjadi kasus di ef core versi <=1.0 (menurut saya).

  • Dalam SQLServer string.contains diubah menjadi CHARINDEX() , di Oracle dan sqlite ke instr() yang peka huruf besar/kecil secara default KECUALI db atau susunan kolom didefinisikan sebaliknya ( Sekali lagi, saya tidak tahu untuk postgresql ).
  • Dalam semua kasus EF.Functions.Like() diubah menjadi SQL LIKE ekspresi yang tidak peka huruf besar/kecil secara default kecuali db atau susunan kolom didefinisikan sebaliknya.

Jadi ya, semuanya tergantung pada pemeriksaan tetapi - koreksi saya jika saya salah - dengan cara tertentu kode dapat memengaruhi pencarian peka huruf besar/kecil tergantung pada salah satu metode di atas yang Anda gunakan.

Sekarang, saya mungkin tidak sepenuhnya mutakhir, tetapi saya tidak berpikir migrasi inti EF berurusan dengan susunan DB secara alami dan kecuali Anda telah membuat tabel secara manual, Anda akan berakhir dengan susunan default (peka huruf besar-kecil untuk sqlite dan saya sejujurnya tidak tahu untuk yang lain).

Kembali ke pertanyaan awal, Anda memiliki setidaknya 2 opsi untuk melakukan pencarian peka huruf besar-kecil ini jika tidak 3 di rilis mendatang :

  1. Tentukan susunan kolom pada pembuatan menggunakan DbContext.OnModelCreating() menggunakan trik ini
  2. Ganti string.Contains your Anda oleh EF.Functions.Like()
  3. Atau tunggu fitur menjanjikan yang masih dalam diskusi :EF.Functions.Collate() fungsi


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melakukan kueri pemilihan di blok DO?

  2. Pengindeksan basis data singkatnya dengan B+tree dan Hash sebagai perbandingan

  3. ST_DWithin mengambil parameter sebagai derajat , bukan meter , mengapa?

  4. Kesalahan dalam evolusi di Heroku

  5. Pencocokan algoritma dalam SQL