asp.net - SqlServer Spatial DataReader.GetFieldType 返回 null

标签 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);

我已经尝试这样做,但在 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/

相关文章:

c# - 在 Startup.cs 的 Configure 中获取域名或主机名和端口

sql-server - 了解集成服务上存储的包

sql - 将大型 sql 脚本分成较小的批处理有好处吗?

c# - 如何从 C# 读取数组列表并将其写入 javascript 对象

database - 无法用数据填充 OleDbDataAdapter

vb.net - 如何将带有 "!@@@"的字符串格式函数从vb6.0迁移到vb.net?

asp.net - 停止asp :PlaceHolder from removing whitespaces

javascript - 下拉列表刷新

c# - “日期”是 SoapElementAttribute 的无效值

vb.net - InvalidArgument= '0' 的值对于 'SelectedIndex' 无效。参数名称: SelectedIndex using ShowDialog