Han*_*urg 3 c# sql-server sqlgeography sql-server-2012
我正在使用Visual Studio 2013和SQL Server 2012在C#中开发.我已经能够使用T-SQL在地理列中存储多边形,并且我没有尝试在代码中使用SqlGeography类来检索数据.
当我尝试:
SqlGeography polyB = (SqlGeography)dr["extent"]; // stored in OGC Well Known Binary format
Run Code Online (Sandbox Code Playgroud)
从数据库中检索多边形我收到的消息:
GeoLib.dll中发生了未处理的"System.InvalidCastException"类型异常
附加信息:[A] Microsoft.SqlServer.Types.SqlGeography无法强制转换为[B] Microsoft.SqlServer.Types.SqlGeography.类型A源自'Microsoft.SqlServer.Types,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91',位于'默认'位置'C:\ Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\10.0 .0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll".
类型B源自'Microsoft.SqlServer.Types,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91',位于'默认'位置'C:\ Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\11.0 .0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll".
我怀疑SQL Server和Visual Studio之间的版本不兼容,如不同的版本号所示.有没有人碰到这个?也许我需要安装SQL Server 2014?任何想法都表示赞赏!
虽然你自己的答案清楚地解决了你的问题(这很好),但通过做你所拥有的,你已经强迫自己无法访问仅在SQL 2012以后的几何和地理可用的一些方法.
以下链接解释了解决此问题的一些更好的方法,请参阅SQL Server 2012中对数据库引擎功能的重大更改
您将在页面下方找到关于三分之一的相关信息,分为" SQL CLR数据类型(几何,地理和等级ID) ".我选择的方法是在app.config中重定向程序集 - 但如果您愿意/需要,可以使用其他程序.
请注意,SQL Server 2014需要相同的解决方案,但与指定Microsoft.SqlServer.Types程序集的版本12不兼容,也不能将"Sql Server 2014"指定为连接字符串的Type System Version参数 - 使用2012.
写作时间正确.
为迟到的答案道歉,希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
2712 次 |
| 最近记录: |