EF Core与citext数据类型的Postgres对话

问题描述 投票:0回答:1

我需要一些帮助。我在跑.NET Core 3.1Npgsql.EntityFrameworkCore.PostgreSQL 3.1.2Microsoft.EntityFrameworkCore.Tools 3.1.2针对postgres数据库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'。

有人对此有任何意见吗?非常感谢!

c# postgresql .net-core npgsql ef-core-3.1
1个回答
0
投票

确保具有该类型更改的新迁移已应用于您的数据库。

要考虑的另一件事是数据库使用的排序规则。我的想法是,在您从MSSQL迁移到Postgre之后,排序规则尚未保存。

© www.soinside.com 2019 - 2024. All rights reserved.