【发布时间】:2014-03-31 05:32:55
【问题描述】:
抽象编程、糟糕/不完整的文档和神秘错误的组合让我摸不着头脑,想弄清楚是什么导致了这个错误:
- MySql 5.6
- 实体框架 6.0.2
- .NET 6.8.3 的 MySql 连接器
只需使用 EntityFramework 从具有几何列的表中加载模型。该列的值由以下人员设置:
var example = DbGeometry.FromText(string.Format("POINT({0} {1})", 51.5 /* Lat /*, -1.28 /* LON * /), 4326)
回读值会产生异常:
24114:输入知名文本中的标签 SRID=4326;POINT(51.5 (WKT) 无效。有效标签为 POINT、LINESTRING、POLYGON、 多点、多线串、多多边形、几何集合、 CIRCULARSTRING、COMPOUNDCURVE、CURVEPOLYGON 和 FULLGLOBE(地理 仅限数据类型)。
使用堆栈跟踪:
[FormatException: 24114: The label SRID=4326;POINT(51.5 in the input well-known text (WKT) is not valid. Valid labels are POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION, CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON and FULLGLOBE (geography Data Type only).]
Microsoft.SqlServer.Types.OpenGisTypes.ParseLabel(String input) +326
Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType type) +99
Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType type, Int32 srid) +47
Microsoft.SqlServer.Types.SqlGeometry.GeometryFromText(OpenGisType type, SqlChars text, Int32 srid) +485
Microsoft.SqlServer.Types.SqlGeometry.Parse(SqlString s) +222
我的第一个观察是使用 Microsoft.SqlServer 命名空间,这似乎不一致,因为我使用的是 MySQL 提供程序。
MySQL .NET 连接器是否不支持 SRID?它没有正确注册吗? (基本上,我正在尝试找出 DbGeometry 对象上的 .Distance() 方法返回的单位是什么,到目前为止它似乎是一个随机小数。
【问题讨论】:
标签: mysql entity-framework gis geospatial