Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melakukan Perbandingan Sensitif Kes dalam LINQ kepada Entiti?
LINQ kepada Entiti: Mencapai Perbandingan Sensitif Kes
Pertanyaan LINQ kepada Entiti sering mewarisi sifat SQL Server yang tidak peka huruf besar-besaran. Panduan ini meneroka kaedah untuk menguatkuasakan perbandingan sensitif huruf dalam LINQ kepada pertanyaan Entiti.
Memahami Tingkah Laku Tidak Peka Husus
LINQ kepada Entiti menterjemah pertanyaan ke dalam SQL. Pengumpulan lalai SQL Server adalah tidak peka huruf besar-besaran, yang bermaksud "Nama == 'ThingamaBob'" dianggap sebagai padanan tidak sensitif huruf besar-kecil.
Penyelesaian Peringkat Pangkalan Data (Sebelah Pelayan)
Pendekatan yang paling berkesan ialah mengubah suai himpunan lajur pangkalan data menjadi peka huruf besar-kecil. Gunakan pernyataan SQL seperti ini:
<code class="language-sql">ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS</code>
Pindaan ini memastikan perbandingan sensitif huruf besar-kecil dalam kedua-dua SQL dan LINQ kepada pertanyaan Entiti.
Penyelesaian Peringkat Aplikasi (Pihak Pelanggan)
Jika pengubahsuaian pangkalan data tidak praktikal, penyelesaian pihak pelanggan boleh dilaksanakan, walaupun ia kurang berprestasi:
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
Pendekatan ini mendapatkan semula data kepada pelanggan, melakukan perbandingan sensitif huruf besar dalam ingatan.
Pertimbangan Penting
ObjectQuery.ToTraceString()
untuk memeriksa SQL yang dijana dan mengesahkan pengumpulan yang digunakan.Atas ialah kandungan terperinci Bagaimana untuk Melakukan Perbandingan Sensitif Kes dalam LINQ kepada Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!