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

孤街醉人 提交于 2019-11-30 02:15:19

问题


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


回答1:


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.




回答2:


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!




回答3:


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.



来源:https://stackoverflow.com/questions/27008634/how-to-use-spatial-data-types-in-asp-net-vnext-with-ef-7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!