SqlServer Spatial DataReader.GetFieldType返回null

时间:2014-05-09 12:49:24

标签: asp.net sql-server vb.net geospatial

我有一个使用SQL Server空间数据类型的.net4.5 Web应用程序项目。

在开发机器上本地完美地工作,但是当部署到应用程序服务器时,我尝试在具有空间数据的表上运行查询时会出现以下错误:

System.InvalidOperationException: DataReader.GetFieldType(5) returned null.

我发现如果服务器上没有安装SQLServer,则不支持空间数据类型。

因此我将nuget包安装到我的项目中:

Install-Package Microsoft.SqlServer.Types

这添加了对Microsoft.SqlServer.Types的引用,并创建了一个包含一些dll的SqlServerTypes文件夹。

将项目重新部署到服务器后,它仍然无效(相同的错误)。

nuget包中的说明说我必须在applciaion_start事件中添加以下行:

SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

我尝试过这样做,但是我在SqlServerTypes下得到了波浪形的蓝线,并在Visual Studio中出现了“未声明SqlServerTypes”的错误。

我尝试过添加

Imports Microsoft.SqlServer.Types

但没有SqlServerTypes命名空间或类。

1 个答案:

答案 0 :(得分:4)

nuget包Microsoft.SqlServer.Types仅适用于c#项目。

您可以修改该类以与vb.net项目兼容。

使用以下方法在项目中安装支持:

Install-Package Microsoft.SqlServer.Types

找到以下文件:

/SqlServerTypes/Loader.cs

将Loader.cs中的代码转换为vb(可以使用在线转换器执行此操作)并将文件另存为:Loader.vb

现在,您将能够从项目中访问 SqlServerTypes 命名空间。