Perbandingan tidak sensitif huruf dalam LINQ kepada Entiti
Tidak seperti LINQ kepada Objek, LINQ kepada Entiti tidak secara langsung menyokong perbandingan sensitif huruf besar-besaran. Ini kerana LINQ kepada Entiti menukar ungkapan Lambda kepada pernyataan SQL, yang akhirnya dilaksanakan oleh pangkalan data (seperti SQL Server). Secara lalai, SQL Server menggunakan pengumpulan tidak sensitif huruf besar-besaran, yang bermaksud pertanyaan berikut akan sentiasa mengembalikan padanan tanpa mengira kes:
<code>context.Thingies.First(t => t.Name == "ThingamaBob");</code>
Penyelesaian bahagian pelayan
Untuk melaksanakan perbandingan sensitif huruf besar dalam LINQ kepada Entiti, pengumpulan pangkalan data lajur yang berkaitan mesti diubah suai. Sebagai contoh, pernyataan SQL berikut menukar himpunan lajur "Nama" dalam jadual "Thingies" menjadi peka huruf besar-kecil:
<code>ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS;</code>
Penyelesaian pelanggan
Walaupun tidak sesuai, terdapat penyelesaian sebelah pelanggan yang memanfaatkan kedua-dua LINQ kepada Entiti dan LINQ kepada Objek:
<code>var result = context.Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
Dalam pendekatan ini, AsEnumerable()
menukar pertanyaan kepada penghitungan dalam memori, membolehkan anda melakukan perbandingan sensitif huruf besar kedua menggunakan Where()
. Walau bagaimanapun, penyelesaian ini memperkenalkan pertanyaan tambahan kepada pangkalan data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Perbandingan Sensitif Kes dalam LINQ kepada Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!