有没有办法用 EntityFrameworkCore 2.2 声明空间索引?

Is there a way to declare a Spatial Index with EntityFrameworkCore 2.2?

我正在使用 Entity Framework Core 2.2NetTopologySuite 1.15.1SQL 服务器 2016。拥有类型为 IPoint 的列非常有用,我想在其上创建索引。

我有这个table

public class Location
{
    public int Id { get; set; }

    public IPoint Coordinates { get; set; }

    public static void Register(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Location>(entity => entity.HasIndex(x => new {x.Coordinates}));
    }
}

并且 EF 核心在生成迁移时处理得很好,因此生成了以下代码:

migrationBuilder.CreateIndex(
    name: "IX_Locations_Coordinates",
    schema: "data",
    table: "Locations",
    column: "Coordinates");

但是,一旦我尝试将迁移应用到数据库,SqlException 就会抛出以下消息

SqlException: Column 'Coordinates' in table 'data.Locations' is of a type that is invalid for use as a key column in an index or statistics.

SQL 服务器 是否 支持 geography.

类型列的索引

我认为原因可能是 EF Core 正在尝试创建 regular index rather than spatial one

是我做错了什么还是不支持?有没有办法告诉 EF Core 它应该创建空间索引?

查看 EF Core 的问题日志,似乎尚不支持创建空间索引。

https://github.com/aspnet/EntityFrameworkCore/issues/12538

问题 1100 支持 SQL 服务器和 SQL Lite 上的空间数据类型。