LINQ kepada Entiti dan Sensitiviti Kes: Panduan Komprehensif
Sensitiviti kes dalam LINQ kepada pertanyaan Entiti banyak dipengaruhi oleh pangkalan data asas. SQL Server, sebagai contoh, lalai kepada pengumpulan tidak peka huruf besar-kecil. Ini bermakna pertanyaan seperti t.Name == "ThingamaBob"
akan mengabaikan perbezaan kes.
Penyelesaian Peringkat Pangkalan Data (Disyorkan)
Kaedah yang paling cekap dan boleh dipercayai untuk perbandingan sensitif huruf besar-kecil adalah dengan melaraskan penyusunan lajur pangkalan data. Dalam SQL Server, ini melibatkan penggunaan perintah ALTER TABLE
. Contohnya: ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS
menguatkuasakan sensitiviti huruf besar pada lajur Name
.
Pendekatan Sebelah Pelanggan (Alternatif)
Jika mengubah suai pengumpulan pangkalan data tidak dapat dilaksanakan, penyelesaian sisi klien menggunakan LINQ ke Objek untuk perbandingan kedua:
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
Nota Penting:
ObjectQuery.ToTraceString()
membolehkan pemeriksaan SQL yang dijana, mendedahkan sebarang pengumpulan yang digunakan.Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Sensitiviti Kes dalam LINQ kepada Pertanyaan Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!