J'utilise Entity Framework Core 2.2 con NetTopologySuite 1.15.1 y SQL Server 2016 . Avoir une colonne de type IPoint
fonctionne très bien jusqu'au moment où je veux créer un index dessus.
J'ai ce tableau
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}));
}
}
Et le noyau EF le gère bien en générant une migration, produisant ainsi le code suivant :
migrationBuilder.CreateIndex(
name: "IX_Locations_Coordinates",
schema: "data",
table: "Locations",
column: "Coordinates");
Cependant, dès que j'essaie d'appliquer la migration à la base de données, SqlException
est lancé avec le message suivant
SqlException : La colonne 'Coordinates' de la table 'data.Locations' est d'un type non valide pour être utilisée comme colonne clé dans un index ou une statistique.
SQL Server fait supportent les index sur les colonnes de type geography
.
Je pense que la raison pourrait être que EF Core essaye de créer une indice ordinaire plutôt que spatial un .
Est-ce que je fais quelque chose de mal ou est-ce que ce n'est pas supporté ? Existe-t-il un moyen d'indiquer à EF Core qu'il doit créer un index spatial ?