首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从InvalidCastException检索SqlGeography类型时如何解析DataReader?

从InvalidCastException检索SqlGeography类型时如何解析DataReader?
EN

Stack Overflow用户
提问于 2014-07-22 21:19:14
回答 2查看 3.3K关注 0票数 3

我正在使用Visual 2013和Server 2012在C#中进行开发。我已经能够使用to在地理列中存储多边形,并且不尝试在代码中使用SqlGeography类来检索数据。

当我尝试:

代码语言:javascript
复制
SqlGeography polyB = (SqlGeography)dr["extent"]; // stored in OGC Well Known Binary format

要从数据库中检索多边形,我将收到以下消息:

System.InvalidCastException类型的未处理异常发生在GeoLib.dll中 附加信息:无法将AMicrosoft.SqlServer.Types.SqlGeography转换为BMicrosoft.SqlServer.Types.SqlGeography。类型A来源于位于location 'C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\10.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll'.的上下文中的“Microsoft.SqlServer.Types、Version=10.0.0.0、Culture=neutral、PublicKeyToken=89845dcd8080cc91” B类型源自位于location 'C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\11.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll'.的上下文中的“Microsoft.SqlServer.Types、Version=11.0.0.0、Culture=neutral、PublicKeyToken=89845dcd8080cc91”

我怀疑Server和Visual之间的版本不兼容,因为版本号不同。有人遇到过这种情况吗?也许我需要安装Server 2014?任何想法都是值得赞赏的!

EN

回答 2

Stack Overflow用户

发布于 2014-08-24 17:38:02

虽然您自己的答案清楚地解决了您的问题(这是很棒的),但是通过做您所拥有的,您已经迫使自己无法访问仅在SQL 2012之后才能访问到的几何学和地理学可用的方法。

下面的链接解释了解决这个问题的一些更好的方法,请参阅在Server 2012中中断对数据库引擎功能的更改

您将在页面中找到有关三分之一的相关信息,分标题为"SQL数据类型(几何、地理和层次结构)“。我选择的方法是在app.config中重定向程序集--但如果您愿意/需要的话,可以使用其他方法之一。

请注意,Server 2014需要相同的解决方案,但还不能与指定Microsoft.SqlServer.Types程序集的版本12兼容,也不能将“Server 2014”指定为连接字符串的Type参数-Use2012。

在写作时是正确的。

对迟来的答复表示歉意,希望它能帮上忙。

票数 6
EN

Stack Overflow用户

发布于 2014-07-30 19:35:20

原来我使用的是version 11 (我怀疑这是Visual 2013附带的),而不是Server 2012必须使用的版本10。当我将项目引用更改为版本10 .dll时,一切正常。

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

https://stackoverflow.com/questions/24898039

复制
相关文章

相似问题

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