-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SQL Server Spatial Indexes #12538
Comments
I don't know much about the other databases, but at least for PostgreSQL I'm not sure that spatial indexes require any special handling beyond what exists for regular indexes... Npgsql already supports specifying the index method (gist vs. brin etc.), is anything else required as far as you know? |
Don't know, but that seems sufficient enough for now. Unfortunately, SQL Server and SQLite require entirely different DDL. |
Ah, got it... Things always seem so complicated in those evil parallel universes... |
@roji is it a simple case of this when declaring a spatial index of using public class Port
{
public Guid Id {get; set;}
public Point Location { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
if (this.Database.ProviderName == "Npgsql.EntityFrameworkCore.PostgreSQL")
{
modelBuilder.HasPostgresExtension("postgis");
modelBuilder.Entity<Port>()
.HasIndex(l => l.Location);
}
} |
@garfbradaz according to the docs, the same DDL is used to create indexes on PostGIS objects - so that should be fine. You may need to specify the index method (GIST) but that's already supported (ForNpgsqlHasMethod). |
indeed with only HasIndex you get a btree |
Apparently I'm a rare SQL spatial user. There are a lot of tunable parameters in a MS-SQL spatial index. Would EF Core support specifying the extent of the spatial coordinates or is that a follow up direct SQL query in a migration? A current workaround for this issue is a migration with raw SQL to create the index:
|
is there still no support for spatial indexes in EF Core? I'm using NetTopologySuite with a custom type and a converter but using HasIndex gives error, so what should I do beside using RAW SQL ? |
For now, using raw SQL is the way to go. This issue has only received 10 votes up to now, which is one reason we haven't been able to prioritize it. |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
You could try to detect the database type during creation and skip the spatial index creation script, when its not supported by the database type |
One could start with the basics like:
|
After #1100 is implemented, we should consider allowing spatial indexes to be defined on spatial columns. My initial thought is to promote (by convention) regular indexes defined on these columns to spatial indexes, and for backends that support additional facets, we should expose Fluent API.
The text was updated successfully, but these errors were encountered: