EntityFramework 地理列的 PostgreSQL GIST 索引

EntityFramework PostgreSQL GIST index for geography column

我正在尝试创建一个索引,如下所示:

CREATE INDEX example1_gpx ON example1 USING GIST (geography(geomcol));

使用 EF codefirst,我在 codefirst 上做了这个:

    builder.HasIndex(x => new
        {
            x.GeoLocation
        })
        .HasMethod("GIST");

但我不能指定它是地理类型的列。

如何使用 CodeFirst 创建此索引?

您上面的索引似乎将 geography() 转换应用于 geometry 列;如果是这样,它就是一个表达式索引(而不是一个简单的列索引)。 Npgsql EF Core 提供程序当前不支持建模表达式索引(see this issue), but you can always use raw SQL 在迁移中创建索引。

但是,我建议您考虑一下为什么要将表达式索引中的 geometry 列转换为 geography;您可能需要考虑改用您的专栏 geography。另一种选择是在 geometry 列旁边生成一个类型为 geography 的附加列。