У меня есть следующий код:
SqlExpression<Postcodes> sqlExpression = db.From<Postcodes>()
.Where(x => x.CityId.StartsWith(searchString))
.OrderBy(x => x.CityId)
.ThenBy(x => x.ZipCode)
.Take(take);
Когда я смотрю в отладке, я вижу, что sqlExpression.BodyExpression
имеет:
FROM "search"."Postcodes"
WHERE upper("CityId") like @0
Почему он генерирует даже "верхний"хотя я не использовал x.CityId.ToUpper()
?
Обновление: Когда я использую "nort"
в качестве ввода, я вижу это в выводе отладки:
2018-11-23 07:37:22,781 [21] DEBUG ServiceStack.OrmLite.OrmLiteReadCommandExtensions [(null)] - SQL: SELECT TOP 100 "ZipCode", "CityId", "StateId"
FROM "search"."Postcodes"
WHERE upper("CityId") like @0
ORDER BY "CityId", "ZipCode"
PARAMS: @0=NORT%
Похоже, по умолчанию используется сопоставление без учета регистра.
Почему не учитывается регистр по умолчанию и как я могу заставить его выполнить сопоставление с учетом регистра?
Обновление: Как отметил Габиту, он просто вводит имя столбца в верхнем регистре и не влияет на запрос.Какой смысл делать имя столбца заглавными?