我有一个使用 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);
我已经尝试这样做,但在 Visual Studio 中,SqlServerTypes 下出现了波浪状的蓝线,并出现错误“SqlServerTypes 未声明”。
我尝试添加
Imports Microsoft.SqlServer.Types
但没有 SqlServerTypes 命名空间或类。
最佳答案
nuget 包 Microsoft.SqlServer.Types 仅适用于 C# 项目。
您可以修改该类以与 vb.net 项目兼容。
使用以下方法将支持安装到您的项目中:
Install-Package Microsoft.SqlServer.Types
找到以下文件:
/SqlServerTypes/Loader.cs
将Loader.cs中的代码转换为vb(您可以使用在线转换器完成此操作)并将文件另存为:Loader.vb
现在您将能够从您的项目访问 SqlServerTypes 命名空间。
关于asp.net - SqlServer Spatial DataReader.GetFieldType 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565095/