LINQ to Entities et sensibilité à la casse : un guide complet
La sensibilité à la casse dans les requêtes LINQ to Entities est fortement influencée par la base de données sous-jacente. SQL Server, par exemple, utilise par défaut un classement qui ne respecte pas la casse. Cela signifie qu'une requête telle que t.Name == "ThingamaBob"
ignorera les différences de casse.
Solution au niveau de la base de données (recommandée)
La méthode la plus efficace et la plus fiable pour les comparaisons sensibles à la casse consiste à ajuster le classement de la colonne de la base de données. Dans SQL Server, cela implique d'utiliser la commande ALTER TABLE
. Par exemple : ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS
applique le respect de la casse dans la colonne Name
.
Approche côté client (alternative)
Si la modification du classement de la base de données n'est pas réalisable, une solution de contournement côté client utilise LINQ to Objects pour une comparaison secondaire :
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
Remarques importantes :
ObjectQuery.ToTraceString()
permet d'inspecter le SQL généré, révélant tous les classements appliqués.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!