列 "path" 是 ltree 类型,但表达式是文本类型

Column "path" is of type ltree but expression is of type text

我使用 Npgsql.EntityFrameworkCore.PostgreSQL 库。 如何通过 Entity Framework Core insert/update PostgreSQL table 中的 ltree 列? 数据库 table:

CREATE TABLE Entity (path ltree);

创建模型时:

modelBuilder.HasPostgresExtension("ltree");
...
entity.Property(e => e.Path).HasColumnName("path").HasColumnType("ltree");

实体:

public string Path { get; set; }

在插入时出现错误:

Npgsql.PostgresException: 42804: column "path" is of type ltree but expression is of type text

Npgsql 当前不支持 ltree 类型,因为 PostgreSQL 不为其提供二进制 input/output 函数(默认情况下 Npgsql 仅支持二进制)。相关问题是 https://github.com/npgsql/npgsql/issues/699.

使用 ADO.NET API 时,仍然可以在文本模式下像其他不受二进制支持的类型一样读写 ltree - 请参阅 the Npgsql FAQ 了解如何执行此操作.但是,您似乎在尝试使用 EF Core,但这是不可能的。