Npgsql.PostgresException: 类型 "ltree" 不存在

Npgsql.PostgresException: type "ltree" does not exist

我正在开发具有 asp.net 核心 [net5.0]

的 WebAPI

在域对象中,我使用 Ltree 作为层次结构。添加和更新迁移时,出现以下错误:Npgsql.PostgresException: type "ltree" does not exist.

我做了一些研究,发现如果我在 PostgreSQL 数据库上 运行 "create extension Ltree",这将为 Ltree 创建扩展。

在代码优先方法中,将在添加和更新迁移时创建数据库,因此我无法转到数据库并为此创建扩展。

我的问题是:是否可以在迁移中创建扩展?

public class Department
{
   public int Id { get; set; }
   
   [Column(TypeName = "Ltree")]
   public string Ltree { get; set; }
   
   public string Name { get; set; }
}

您可以通过在 model-building 代码中添加以下行(例如 OnModelCreating)让 EF Core 为您创建扩展:

modelBuilder.HasPostgresExtension("ltree");

请注意,在 7.0 版中,提供程序将自动检测是否需要扩展(通过检查您的模型属性),并将添加适当的 PostgreSQL 扩展,而无需您明确地执行此操作(请参阅 https://github.com/npgsql/efcore.pg/issues/2137).