无法使用 "gist_ltree_ops(siglen=100)"在 EF Core 代码优先方法中设置签名强度



我使用EF Core代码优先方法,并尝试使用下面的代码片段配置列类型ltree的签名强度。

public class Node
{
public Guid Id { get; set; }
public LTree Path { get; set; }
public string Name { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasPostgresExtension("ltree");
modelBuilder.Entity<Node>().HasIndex(x => x.Path).HasMethod("gist");           
}

这只是创建一个默认签名长度为8字节的索引。我想通过显式指定长度来覆盖此签名长度,就像我们在postgres查询编辑器

中所做的那样
CREATE INDEX "IX_Nodes_Path" ON public."Nodes" USING gist ("Path" gist_ltree_ops (siglen='100'))

任何实现这一目标的指针都将大有帮助。

我使用的是pogres版本14.0,EF Core 6 rc, npgsql 6 rc.

不幸的是,这是不支持的Fluent API -你必须编辑你的脚手架迁移和使用原始SQL来表达这一点。

提供者有一个Fluent API来指定操作符类,但没有指定选项(例如siglen)。

最新更新