Мне нужна помощь.
Я использую
.NET Core 3.1
Npgsql.EntityFrameworkCore.PostgreSQL 3.1.2
Microsoft.EntityFrameworkCore.Tools 3.1.2
против postgres db
PostgreSQL 11.5
Мы перешли с MSSQL на postgres, и раньше этот код работал:
_context.Users.SingleOrDefaultAsync(x => x.EmailAddress == emailadress);
С учетом сказанного, теперь данные чувствительны к регистру и, например, сравнение "[email protected]" с "[email protected]" перестало работать. Можно было бы заменить все на более низкие строки, но, поскольку существует много подобных сравнений, потребуется некоторое время, чтобы это изменить.
Тогда я нашел цитекст, который мне на помощь, я подумал.
Я изменил таблица / столбец, а затем - объект .net. Я немного не уверен, как исправить.
Я попытался добавить к объекту на основе этой ссылки: https://www.npgsql.org/efcore/mapping/general.html?tabs=data-annotations
[Column(TypeName = "citext")]
public string EmailAddress { get; set; }
но это не помогло. Я нахожу это в журналах:
Выполнение DbCommand [Parameters = [@__ emailadress_0 = '?'], CommandType = 'Text', CommandTimeout = '30 ']
И я не знаю, следует ли мне ожидать CommandType = 'citext' здесь или нет.
Есть ли у кого-нибудь какие-либо комментарии по этому поводу?
Большое спасибо!