一些背景:
我在两个不同的 VM 上运行两个不同的 SQL Server 安装。我正在尝试从我的代码(为 SQL Server 2008 R2 编写)连接到它们。我当前的 .NET 框架版本是 4.0。我的 Microsoft SQL Server 2008 R2 安装正在运行为其设计的 AdventureWorks,而我的 SQL Server 2012 Express 安装正在运行更新的 AdventureWorks2012 数据库。我正在查询 Person.Address。
目前我遇到了一个异常,说“DataType 不能为空”。我通过查看返回的架构推断出问题来自 SQL Server 2012 返回
Microsoft.SqlServer.Types.SqlGeography
数据类型。似乎 Type.GetType 无法将其转换为可用的东西并引发异常。我松了一口气,我什么都没做,但我也很困惑,因为这段代码应该可以通用。请记住,此代码在 SQL Server 2008 R2 上完美运行(因为它缺少空间数据类型)。
我可以想出 100 种不好的方法来处理这个问题。但是,我想向你们寻求建议。将 .NET 升级到 4.5 会解决这个问题吗?我是否必须更改我的代码以适应新的数据类型?如果我的应用程序不处理空间数据类型,我应该担心它们吗?我该如何处理,因为显然 SqlClient 和 Type.GetType 做得不好。
谢谢!