Npgsql Character数据类型从Postgresql到.NET Core 2.0的映射

Npgsql data type mapping of Character from Postgresql to .NET Core 2.0

在 PostgreSQL 数据库中,我有一个 RFC 列,它是一种代码,用于识别墨西哥的企业和人员(出于税收目的),我需要将这些代码存储在我的数据库中。这个'code'的格式和下一个一样:

AAAXXXXXXAXX -> 其中 A 是字母,X 是数字。

我想将 RFC 列存储为主键。据我搜索,Postgres Character 数据类型对此很有用,我有它的 SQL 查询,因为 pgAdmin4 生成:

rfc character(13) COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT pk_empresas PRIMARY KEY (rfc)

但是,在 Visual Studio 中使用包管理器控制台和下一个命令:

Scaffold-DbContext "Host=localhost;Database=database;Username=pgadmin;Password=xxxx" Npgsql.EntityFrameworkCore.PostgreSQL -force

它生成我的模型,这些模型被映射为我的数据库中的表。 这里的问题是,如果 .NET char 数据类型仅包含单个字符并且 属性 RFC 生成如下,我如何才能正常工作?

public char Rfc { get; set; }

第一种方法只存储第一个字符。我可以在 pgAdmin4

中看到它

Database record saved

我已经尝试更改 Rfc 属性 数据类型(因为我知道某些 .NET 数据类型可以与 PostgreSQL 中的其他数据类型匹配,正如我们在下一个 link Npgsql Supported Types ) 像这样的字符串:

public string Rfc { get; set; }

但是这个 Table 也与我数据库中的另外 4 或 5 个 Table 相关,当我尝试更改此 [=51= 的数据类型时出现太多错误] 在我的模型中(因为它在模型中也相关)。

我不得不说我已经尝试过了,但是它抛出了一个异常。

Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries.

编辑 1: 我正在使用 Npgsql.EntityFrameworkCore.PostgreSQL 版本 2.0.1

此问题已在即将发布的 Npgsql EF Core 提供程序的 2.0.2 版中修复。

请参阅 https://github.com/npgsql/Npgsql.EntityFrameworkCore.PostgreSQL/issues/370 了解 github 问题。