我使用Npgsql.EntityFrameworkCore.PostgreSQL库。 如何通过Entity Framework Core在PostgreSQL表中插入/更新ltree列? 数据库表:
CREATE TABLE Entity (path ltree);
OnModelCreating:
modelBuilder.HasPostgresExtension("ltree");
...
entity.Property(e => e.Path).HasColumnName("path").HasColumnType("ltree");
实体:
public string Path { get; set; }
在插入时我得到了错误:
Npgsql.PostgresException:42804:列“path”的类型为ltree但是 表达式是文本类型
答案 0 :(得分:1)
Npgsql当前不支持ltree类型,因为PostgreSQL没有为它提供二进制输入/输出函数(并且Npgsql默认是二进制的)。相关问题是https://github.com/npgsql/npgsql/issues/699。
在使用ADO.NET API时,仍然可以像文本模式一样读取和写入ltree,就像其他二进制不支持的类型一样 - 请参阅the Npgsql FAQ了解如何执行此操作。但是,您似乎尝试使用EF Core,这是不可能的。