我正在使用Visual 2013和Server 2012在C#中进行开发。我已经能够使用to在地理列中存储多边形,并且不尝试在代码中使用SqlGeography类来检索数据。
当我尝试:
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?任何想法都是值得赞赏的!
发布于 2014-08-24 17:38:02
虽然您自己的答案清楚地解决了您的问题(这是很棒的),但是通过做您所拥有的,您已经迫使自己无法访问仅在SQL 2012之后才能访问到的几何学和地理学可用的方法。
下面的链接解释了解决这个问题的一些更好的方法,请参阅在Server 2012中中断对数据库引擎功能的更改
您将在页面中找到有关三分之一的相关信息,分标题为"SQL数据类型(几何、地理和层次结构)“。我选择的方法是在app.config中重定向程序集--但如果您愿意/需要的话,可以使用其他方法之一。
请注意,Server 2014需要相同的解决方案,但还不能与指定Microsoft.SqlServer.Types程序集的版本12兼容,也不能将“Server 2014”指定为连接字符串的Type参数-Use2012。
在写作时是正确的。
对迟来的答复表示歉意,希望它能帮上忙。
发布于 2014-07-30 19:35:20
原来我使用的是version 11 (我怀疑这是Visual 2013附带的),而不是Server 2012必须使用的版本10。当我将项目引用更改为版本10 .dll时,一切正常。
https://stackoverflow.com/questions/24898039
复制相似问题