LINQ to Entities : réaliser des comparaisons sensibles à la casse
Les requêtes LINQ to Entities héritent souvent de la nature insensible à la casse de SQL Server. Ce guide explore les méthodes permettant d'appliquer des comparaisons sensibles à la casse dans les requêtes LINQ to Entities.
Comprendre le comportement insensible à la casse
LINQ to Entities traduit les requêtes en SQL. Le classement par défaut de SQL Server n'est pas sensible à la casse, ce qui signifie que "Name == 'ThingamaBob'" est traité comme une correspondance insensible à la casse.
Solution au niveau de la base de données (côté serveur)
L'approche la plus efficace consiste à modifier le classement de la colonne de la base de données pour qu'il soit sensible à la casse. Utilisez une instruction SQL comme celle-ci :
<code class="language-sql">ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS</code>
Cette modification garantit des comparaisons sensibles à la casse dans les requêtes SQL et LINQ to Entities.
Solution de contournement au niveau de l'application (côté client)
Si les modifications de la base de données ne sont pas pratiques, une solution côté client peut être implémentée, même si elle est moins performante :
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
Cette approche récupère les données vers le client, en effectuant la comparaison sensible à la casse en mémoire.
Considérations importantes
ObjectQuery.ToTraceString()
pour examiner le SQL généré et vérifier le classement utilisé.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!