首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlGeography型失配

SqlGeography型失配
EN

Stack Overflow用户
提问于 2014-08-15 08:18:22
回答 2查看 2K关注 0票数 2

我在编写内部API时遇到了以下错误。我要做的是以以下方式读取SqlGeography值( Server 2012):

代码语言:javascript
复制
field: public SqlGeography XY { get; set; }

object dbValue = reader["xy"];
PropertyInfo info = type.GetProperty(columnName:"xy");
info.SetValue(entity, dbValue);

虽然这看起来很奇怪,但我之所以以这种方式阅读,是因为它是我编写的包装器的一部分,我们用它来加速sql的读写。它接受一个匿名对象,并根据属性名或属性名将所有sql值读入其中。

除了SqlGeography之外,这一切都很好。我做了一个类型比较,它也失败了,所以我甚至无法检查列是否为SqlGeography类型,因为它总是失败于Microsoft.SqlServer.Types.SqlGeography的比较。

最初的例外情况如下:

类型为“Microsoft.SqlServer.Types.SqlGeography”的对象不能转换为type‘Microsoft.SqlServerT.ypes.SqlGeography’。

如果有什么不清楚的地方,请把枪开了,我会尽量详细说明的。

谢谢!

  • 接受解决方案:Install Microsoft.SqlServer.Types -Version 10.50.1600.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-15 08:32:21

类型程序集上可能存在版本不匹配。这是一个已知的问题,在版本10和11之间。不幸的是,错误信息不包括版本信息,这就是为什么它看起来像胡说八道!

为了绕过它,您可以反序列化类型的二进制表示,即类似这样的内容(如果您的地理列是结果集中的第一列):

代码语言:javascript
复制
var geo = SqlGeography.Deserialize(reader.GetSqlBytes(0));

还有其他解决办法,包括为程序集执行绑定重定向。

更多信息在这里:https://connect.microsoft.com/SQLServer/feedback/details/685654/invalidcastexception-retrieving-sqlgeography-column-in-ado-net-data-reader

票数 5
EN

Stack Overflow用户

发布于 2015-10-23 15:14:11

我在用

代码语言:javascript
复制
DataTable dt;
//...
dt.Load(reader)

要将sql表中的所有行加载到DataTable中,因此我不能使用Dave .提出的解决方案,我的解决方案是修改用于创建SqlDataReader以将SqlGeography列转换为字符串的select查询。示例:

原始sql查询:

代码语言:javascript
复制
SELECT [SpatialColumn] as SpatialData FROM [SpatialTable]

修改后的sql查询:

代码语言:javascript
复制
SELECT [SpatialColumn].STAsText() as SpatialData FROM [SpatialTable]

然后,您必须更改c#代码,以便将字符串解析为真正的SqlGeography,如下所示:

代码语言:javascript
复制
using Microsoft.SqlServer.Types.SqlGeography;

string spatialData = (string) dt.Rows[0]["SpatialData"];
SqlGeography geoGraphy = SqlGeography.Parse(new System.Data.SqlTypes.SqlString(spatialData ));

安本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25323301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档