Есть ли способ объявить пространственный индекс с EntityFrameworkCore 2.2?

Я использую Entity Framework Core 2.2 с NetTopologySuite 1.15.1 и SQL Server 2016. Наличие столбца типа IPoint прекрасно работает до такой степени, что я хочу создать индекс по нему.

У меня есть этот стол

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: столбец "Координаты" в таблице "data.Locations" относится к типу, который недопустим для использования в качестве ключевого столбца в индексе или статистике.

SQL Server поддерживает индексы для столбцов типа geography,

Я полагаю, что причина может заключаться в том, что EF Core пытается создать обычный, а не пространственный индекс.

Я что-то делаю не так или просто не поддерживается? Есть ли способ сказать EF Core, что он должен создавать пространственный индекс?

1 ответ

Решение

Глядя на журнал проблем для EF Core, кажется, что создание пространственных индексов еще не поддерживается.

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

Проблема 1100 - поддержка пространственных типов данных на SQL Server и SQL Lite.

Другие вопросы по тегам