EF Core 3.0 переводит строку. Уравнения ordinalIgnoreCase правильно - PullRequest
0 голосов
/ 31 октября 2019

До EF Core 3.0 это работало нормально (оценивается на сервере + клиенте):

var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.Equals(country.CountryCode, StringComparison.OrdinalIgnoreCase));

Какой самый лучший / предпочтительный метод для перевода string.Equals(str, StringComparison.OrdinalIgnoreCase) -части сейчас в EF Core 3.0, так чтозапрос оценивается только на стороне сервера.

var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToUpper() == country.CountryCode.ToUpper());

или

var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToLower() == country.CountryCode.ToLower());

или

var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToUpperInvariant() == country.CountryCode.ToUpperInvariant());

или

var exists = await _context.Countries.AsNoTracking().AnyAsync(x => x.CountryCode.ToLowerInvariant() == country.CountryCode.ToLowerInvariant());

или что-то ещееще

1 Ответ

3 голосов
/ 31 октября 2019

Вы не должны этого делать, ни использовать принятый метод ответа, вы должны просто использовать String.Equals () без параметров и настроить параметры сортировки базы данных во время создания или миграции.

...