我有一个使用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命名空间或类。
答案 0 :(得分:4)
nuget包Microsoft.SqlServer.Types仅适用于c#项目。
您可以修改该类以与vb.net项目兼容。
使用以下方法在项目中安装支持:
Install-Package Microsoft.SqlServer.Types
找到以下文件:
/SqlServerTypes/Loader.cs
将Loader.cs中的代码转换为vb(可以使用在线转换器执行此操作)并将文件另存为:Loader.vb
现在,您将能够从项目中访问 SqlServerTypes 命名空间。