Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理SQL Server 2012表中的空间数据类型_C#_Sql Server_Sql Server 2012_Sqldatatypes_Sqlclient - Fatal编程技术网

C# 处理SQL Server 2012表中的空间数据类型

C# 处理SQL Server 2012表中的空间数据类型,c#,sql-server,sql-server-2012,sqldatatypes,sqlclient,C#,Sql Server,Sql Server 2012,Sqldatatypes,Sqlclient,一些背景: 我正在两个不同的虚拟机上运行两个不同的SQL Server安装。我正试图从我的代码(为SQLServer2008R2编写)连接到它们。我目前的.NET framework版本是4.0。我的Microsoft SQL Server 2008 R2安装正在运行专为其设计的AdventureWorks,我的SQL Server 2012 Express安装正在运行较新的AdventureWorks2012数据库。我正在查询Person.Address 目前我遇到一个异常,说“数据类型不能为

一些背景:

我正在两个不同的虚拟机上运行两个不同的SQL Server安装。我正试图从我的代码(为SQLServer2008R2编写)连接到它们。我目前的.NET framework版本是4.0。我的Microsoft SQL Server 2008 R2安装正在运行专为其设计的AdventureWorks,我的SQL Server 2012 Express安装正在运行较新的AdventureWorks2012数据库。我正在查询Person.Address

目前我遇到一个异常,说“数据类型不能为null”。通过查看返回的模式,我推断问题来自SQL Server 2012返回的

Microsoft.SqlServer.Types.SqlGeography

数据类型。Type.GetType似乎无法将其转换为可用的内容,并引发异常。我感到欣慰的是,我没有做过什么,但我也感到困惑,因为这段代码应该可以普遍工作。请记住,此代码在SQLServer2008R2上完美地运行(因为它缺少空间数据类型)

我可以想出100个糟糕的方法来处理这个问题。不过我想找你们谈谈该怎么做。将.NET升级到4.5会解决这个问题吗?我是否必须更改代码以适应新的数据类型?如果我的应用程序不处理空间数据类型,我应该担心它们吗?我该如何处理这个问题,因为显然SqlClient和Type.GetType在这方面做得不好


谢谢大家!

如果您使用的是2012和2008 R2,我建议您强制使用SQL 2012 SqlGeography类型

您可以考虑添加程序集重定向,因此试图加载2008 R2 SQLGeRoGrand的任何.NET代码都被视为SQL 2012 SQLGead。SQL库在序列化时通常是向后兼容的(只要有可能,即在不使用SQL 2012特定功能时,如CurvePolygon)



假设您使用的是LINQ to SQL,这可能与@Pondlife重复-错误消息不匹配。此外,提议的副本正在处理一个非常具体的案例,即将地理信息转换为varbinary。我不认为会发生这种情况。这就是为什么它是“可能的”重复:)但另一方面,基本问题似乎是您的.NET 4.0代码不支持SqlGeography,这也是另一个问题中描述的基本问题
<runtime>
  <assemblyBinding>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>