gpt4 book ai didi

c# - 从 DataReader 检索 SqlGeography 类型时如何解决 InvalidCastException?

转载 作者:行者123 更新时间:2023-11-30 14:10:16 26 4
gpt4 key购买 nike

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

当我尝试时:

SqlGeography polyB = (SqlGeography)dr["extent"]; // stored in OGC Well Known Binary format

从我收到消息的数据库中检索多边形:

An unhandled exception of type 'System.InvalidCastException' occurred in GeoLib.dll

Additional information: [A]Microsoft.SqlServer.Types.SqlGeography cannot be cast to [B]Microsoft.SqlServer.Types.SqlGeography. Type A originates from 'Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' in the context 'Default' at location 'C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.Types\10.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.Types.dll'.

Type B originates from 'Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' in the context 'Default' at location '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 及更高版本中可用于几何和地理的一些方法。

以下链接解释了一些解决此问题的更好方法,请参阅 Breaking Changes to Database Engine Features in SQL Server 2012

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

请注意,SQL Server 2014 需要相同的解决方案,但尚不兼容 Microsoft.SqlServer.Types 程序集的指定版本 12,您也不能将“Sql Server 2014”指定为您的类型系统版本参数连接字符串 - 使用 2012。

截至撰写本文时正确无误。

很抱歉回答晚了,希望对您有所帮助。

关于c# - 从 DataReader 检索 SqlGeography 类型时如何解决 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24898039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com