SqlServer 空间数据阅读器返回了空值。

4

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

在开发机器上可以完美运行,但将其部署到应用程序服务器后,尝试对带有空间数据的表运行查询时,会出现以下错误:

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

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

因此,我将NuGet包安装到了我的项目中:

Install-Package Microsoft.SqlServer.Types

这个操作添加了对Microsoft.SqlServer.Types的引用,并创建了一个包含一些dll文件的SqlServerTypes文件夹。
重新部署项目到服务器后,它仍然无法正常工作(出现相同的错误)。
nuget软件包的说明指出,我必须在application_start事件中添加以下代码行:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

我尝试做这个,但在Visual Studio中,SqlServerTypes下面有蓝色的波浪线,并显示错误“SqlServerTypes未声明”。
我尝试添加

Imports Microsoft.SqlServer.Types

但是没有 SqlServerTypes 命名空间或类。

可能是重复问题 https://dev59.com/wGYq5IYBdhLWcg3wtCvO - martennis
1个回答

5

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

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

使用以下命令将支持安装到您的项目中:

Install-Package Microsoft.SqlServer.Types

请找到以下文件:

/SqlServerTypes/Loader.cs

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

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


这让我朝着正确的方向前进;但是我需要在我的 app.config 文件中添加对类型的引用,详见此答案 https://dev59.com/U2Ys5IYBdhLWcg3wDft5#44819952。 - bendecko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接