OData Case In-Sensitive filtrado en API web?
De manera predeterminada, ODataController realiza búsquedas sensibles a mayúsculas y minúsculas. ¿Cómo ampliamos este comportamiento para realizar búsquedas que no distinguen entre mayúsculas y minúsculas?
public class NammaODataController : ODataController
{
[EnableQuery]
public IQueryable<FD> GetFD(ODataQueryOptions qo)
{
return _ctx.FDs.AsQueryAble();
//EF takes care to apply odata query operators internally
//after control passes from action
}
}
Me referíeste SO Parece que podemos aprovechar Expression Tree, pero ¿en qué punto de extensibilidad?
¿Hay alguna forma de interceptar la consulta y personalizar EF / Web Api piplelie para lograr esto?
Aquí hay un ejemplo: / FD? $ Filter = tolower (Pr_Name) eq tolower ('TAMARA'): esto debería devolver a todas las personas con el nombre 'Tamara' (no distingue entre mayúsculas y minúsculas, podría ser 'TAMARA', 'tamara', 'Tamara', Espero que esto ayude, para exponer mi punto.
EDITAR:
Sensibilidad a mayúsculas y minúsculas enODATA Web API queries
no tiene nada que ver con SQL Collation. Este ha sido un problema con el marco Microsoft OData.
Con subcadena de operador
void Main()
{
var lower = _ctx.FD
.Where(sv => sv.Pr_Name.Contains("tamara"))
.Take(1)
.ToList();
Console.WriteLine("LOWER CASE AZURE SQL OUTPUT");
Console.WriteLine(lower);
Console.WriteLine("UPPER CASE AZURE SQL OUTPUT");
var upper = _ctx.FD
.Where(sv => sv.Pr_Name.Contains("TAMARA"))
.Take(1)
.ToList();
Console.WriteLine(upper);
}
Coneq
operador
void Main()
{
var lower = FD
.Where(sv => sv.Pr_Name == tamara A TOPOLESKI")
.Take(1)
.ToList();
Console.WriteLine("LOWER CASE AZURE SQL OUTPUT");
Console.WriteLine(lower);
Console.WriteLine("UPPER CASE AZURE SQL OUTPUT");
var upper = FD
.Where(sv => sv.Pr_Name == "TAMARA TOPOLESKI")
.Take(1)
.ToList();
Console.WriteLine(upper);
}