列 "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,但这是不可能的。
我使用 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,但这是不可能的。