NetTopologySuite.IO.SqlServerBytes
NetTopologySuite.IO.SqlServerBytes copied to clipboard
Code-first spatial index creation
I am getting this error creating my database from scratch in a unit test:
Microsoft.Data.SqlClient.SqlException: 'Column 'MosaicShape' in table 'Location' is of a type that is invalid for use as a key column in an index or statistics.'
This is a simplified version of the class. It was reverse-engineered by EF Core Power Tools.
[Table("Location")]
[Index(nameof(MosaicShape), Name = "MosaicShape_Index")]
class Location{
[Key]
[Column("ID")]
public long Id { get; set; }
[Required]
[Column(TypeName = "geometry")]
public Geometry MosaicShape { get; set; }
}
In a unit test I attempt to create this database from scratch. The error occurs at DataContext.Database.EnsureCreated();
public CreateDropDatabaseFixture(IConfiguration configuration, ILogger log = null)
{
var connStringTemplate = configuration.GetConnectionString("AnnotationConnection");
DatabaseName = RandomLetters(6);
var connString = string.Format(connStringTemplate, DatabaseName);
DbContextOptionsBuilder<AnnotationContext> builder = new DbContextOptionsBuilder<AnnotationContext>();
builder = builder.UseSqlServer(connString, config => config.UseNetTopologySuite()).EnableDetailedErrors().EnableSensitiveDataLogging();
DataContext = new AnnotationContext(builder.Options, log);
DataContext.Database.EnsureCreated();
}
This previous issue indicates a spatial index should be possible. https://github.com/dotnet/efcore/issues/12538
I also tried removing the [Index] attribute from the class and creating it with the builder:
entity.HasIndex(e => e.MosaicShape, "MosaicShape_Index");
The error was the same, as expected.
Microsoft.Data.SqlClient.SqlException: 'Column 'MosaicShape' in table 'Location' is of a type that is invalid for use as a key column in an index or statistics.'
This error looks significantly different from what's in this issue's title. Can you please update one or the other, or add details about how the Geometry.UserData
error fits into it?
Sorry about that. I had another issue I solved before filing this one. I also mis-keyed and submitted this a bit early, but I'm still struggling with it so I left it submitted.
Are you looking for https://github.com/dotnet/efcore/issues/12538?
Yes, apparently I am.