我使用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)。