使用MySQL和EntityFramework的DbGeography

Dev*_*ned 6 c# mysql entity-framework spatial

我使用DbGeographySystem.Data.Entity.Spatial;与实体框架与SQL Server数据库.现在我切换到使用MySQL服务器,当我创建与该DbGeography 类型相关的数据库时,我收到一个错误.

如何在不将所有域类属性更改为其他类型的情况下解决此问题?

public class Place
{
  ...
    public virtual int Id { get; set; }
    public string Name { get; set; }
    public DbGeography Location {get;set;}
  ...

}
Run Code Online (Sandbox Code Playgroud)

我遇到的错误就是这个错误:

System.NotSupportedException: There is no store type corresponding to the EDM type 'Edm.Geography' of primitive type 'Geography'.
Run Code Online (Sandbox Code Playgroud)

小智 4

我翻阅了一堆MySQL文档发现mysql 5.x目前不支持DbGeography数据类型。

对于 mysql 5.x,仅支持 DbGeometry。我烦了。

空间数据支持请参考MySQL官方文档

实体框架支持两种主要的空间数据类型:DbGeometry 和 DBGeography。Connector/Net不支持第二个类型,因为 MySQL 服务器没有任何等效类型来映射此类型。因此所有示例都将使用 DbGeometry 类型。

也许您可以使用DbGeometry数据类型POINT来保存经度和纬度,然后使用Haversine公式来计算距离。