Я использую 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, что он должен создавать пространственный индекс?