Есть ли способ объявить пространственный индекс с EntityFrameworkCore 2.2? - PullRequest
0 голосов
/ 30 января 2019

Я использую 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 Ответ

0 голосов
/ 30 января 2019

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

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

github

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

...