Entity Framework 6.1.3 中的 Citext 数据类型

Citext Data Type in Entity Framework 6.1.3

我正在使用 .NET 4.5 和 Entity Framework 6.1.3 开发一个 WPF 桌面应用程序,代码优先于数据库方法。

数据库是 PostgreSQL,数据提供者是 EntityFramework6.Npgsql 版本 3.0.5。

我的数据库包含多个 citext 数据类型的列,例如电子邮件,因为我希望这些列是唯一的并且不区分大小写。 问题是当我尝试在 visual studio 2015 中添加数据模型时,我收到此警告

错误 6005:目标 Entity Framework 版本当前不支持数据类型 'citext';

后面有太多错误,根据这个 link citext 数据类型在版本 3.0.1 中实现。

https://github.com/npgsql/npgsql/issues/695

看来 Npgsql 在 ADO.NET 层支持 Citex 数据类型,但在 Entity Framework 6 层不支持。

所以我最终得到了两个解决方案。

1-将 citex 列更改为文本并在数据库中不区分大小写的列上使用唯一的较低索引,并使我的应用程序中的所有查询不区分大小写。

2-或者在数据库中保留 citext 类型并采用以前自动生成的模型和 欺骗 Entity Framework(使用带有 citext 属性的字符串)。

有关 Npgsql 开发团队的更多详细信息,请参阅此 link。 https://github.com/npgsql/npgsql/issues/1029