Vijayant Katyal
Vijayant Katyal

Reputation: 662

How to use Spatial Data Types in asp.net vnext with EF 7?

in vnext, using Entity Framework 7 (https://github.com/aspnet/EntityFramework) how to use Spatial Data types (e.g. DbGeography) in model (code-first method) to save points, shapes etc. when creating model for a table.

e.g.

public DbGeography gps_points {get; set;}

I'm unable to use DbGeography.


Update:

Confirmed, this feature is not yet available in EF7, but may be available in future versions.

to track any changes see:

https://github.com/aspnet/EntityFramework/issues/242

https://github.com/aspnet/EntityFramework/issues/1100

Upvotes: 11

Views: 3498

Answers (3)

Amirhossein Mehrvarzi
Amirhossein Mehrvarzi

Reputation: 18954

Support for spatial types was introduced in EF5. However, in EF5 spatial types are only supported when the application targets and runs on .NET 4.5.

Starting with EF6 spatial types are supported for applications targeting both .NET 4 and .NET 4.5.

the Microsoft SQL Server provider depends on some additional low-level libraries that may need to be installed.

Prerequisites for spatial types with Microsoft SQL Server

SQL Server spatial support depends on the low-level, SQL Server-specific types SqlGeography and SqlGeometry. These types live in Microsoft.SqlServer.Types.dll assembly, and this assembly is not shipped as part of EF or as part of the .NET Framework.

When Visual Studio is installed it will often also install a version of SQL Server, and this will include installation of the Microsoft.SqlServer.Types.dll.

If SQL Server is not installed on the machine where you want to use spatial types, or if spatial types were excluded from the SQL Server installation, then you will need to install them manually. The types are included in the SQL Server Feature Packs, and different assemblies exist for SQL Server 2008 and SQL Server 2012.

Upvotes: 0

ischas
ischas

Reputation: 169

Referring to your own issue at the github repository of Entity Framework, there seems no implementation, yet. As the milestone was set to "Backlog" it seems that this issue won't be resolved in the near future.

If you do not need to process your data geographically on database-side (e.g., search in a bounding box or intersections), you can save your data as Well-known text. This can be easily converted to a database geometry type, if EF7 supports spatial data in the future.

Be aware of the string length limits of your database, since WKT can get quiet long for complex shapes.

Upvotes: 2

Chris
Chris

Reputation: 5108

You need to add a reference to System.Data.Entity.Spatial. I don't think it is now included by default under the EF reference, hence the reason you cannot use DbGeography.

Remember, everything is plug and play!

Upvotes: 0

Related Questions