How would I map Spatial Data for EF Core 3.x?

LINQPad 6 seems to completely skip spatial data types such as IGeography.

I'm following the official docs from Microsoft: https://docs.microsoft.com/en-us/ef/core/modeling/spatial

I'm using the "(Entity Framework Core (multi-provider)" driver in LinqPad 6 Ef Core 3.0
Couldn't get it work on EF Core 2.x either.

Any help on mapping Geography data types automatically would be greatly appreciated.
Thanks in advance!

Comments

  • Undocumented, package NetTopologySuite.Core is also required (which I've included).
  • Are you saying that adding NetTopologySuite.Core fixes the problem, or does it make no difference?
  • Adding NetTopologySuite.Core does not fix the problem in LinqPad.
    I believe this is because LinqPad is not referencing the required spatial geography packages NetTopologySuite.Core package and Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite package when creating the custom DBContext for the (Entity Framework Core (multi-provider) option.

    I was able to confirm this by clicking the “Show Assembly Resolution Log”, I didn't see the required package for SQL Server, resulting in EF Core skipping all geography columns.

    According to Microsoft, there’s a separate Spatial Geography package required for each EF Core Provider:
    EF Core Provider Required Spatial NuGet Package
    Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
    Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite
    Microsoft.EntityFrameworkCore.InMemory NetTopologySuite
    Npgsql.EntityFrameworkCore.PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite

    An additional package NetTopologySuite.Core is also required regardless of the EF Core Provider.

    In a Visual Studio project, I was able to successfully scaffold the geography type for SQL Server when I included the Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
    and NetTopologySuite.Core packages in the project.

    It would be great if LinqPad would automatically include the Spatial Geography packages listed above when using the (Entity Framework Core (multi-provider) option, as it would save us the time from creating a separate project and building a DLL to use spatial data. The Entity Framework Core (multi-provider) option is much more convenient!

    Thanks in advance!
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!