I'm building an API using .net core and entity framework core with NetTopologySuite.Core
and Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
.
I have a use case where I want to store a set of geo locations that together builds up a net. I want to have multiple nets, so I have also added a NetId
representing the different nets.
The Location
property is of type NetTopologySuite.Geometries.Point
.
To make sure the same Point
do not get added two times for the same net, I would like to use the combination of Point
and NetId
as a unique key constraint.
I have tried to do it like this:
modelBuilder.Entity<NetLocation>().HasIndex(m => new { m.NetId, m.Point}).IsUnique();
When starting my application I get this error:
Column 'Location' in table 'MyTable' is of a type that is invalid for use as a key column in an index or statistics.
How can I make sure that the exact same location not get added twice to the same net?
With SQL Server it's possible to add computed columns, PointLat = "Point.Lat" and PointLong = "Point.Long", and then use them in the index
Should work, but untested. Don't know about other providers, but they probably have similar
geography
support.