SqlDataReader.GetValue 对几何列不成功
Posted
技术标签:
【中文标题】SqlDataReader.GetValue 对几何列不成功【英文标题】:SqlDataReader.GetValue not successful for geometry columns 【发布时间】:2021-08-14 09:51:59 【问题描述】:当我在使用几何类型的表上有一个 SqlDataReader 时,reader.GetFieldType(index)
返回 null 并且reader.GetValue(index)
导致
System.IO.FileLoadException: '无法加载文件或程序集 'Microsoft.SqlServer.Types,版本=10.0.0.0,文化=中性, PublicKeyToken=89845dcd8080cc91' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)'
我尝试添加 nuget 包 Microsoft.SqlServer.Types v14.0.1016.290,但这并不能解决问题。
【问题讨论】:
【参考方案1】:我还没有使用过geometry
类型,只是阅读文档。 geometry
表示坐标系中的一个点,它以二进制形式存储。所以试试这个:
SqlGeometry geometry = new SqlGeometry();
geometry.Read(new BinaryReader(reader.GetSqlBytes(index).Stream));
【讨论】:
有趣。我怎么知道它是geometry
的类型?
@AndersLindén:根本没有,因为文档根本没有提到它。您必须从 nuget 下载并安装 Microsoft.SqlServer.Types 包。以上是关于SqlDataReader.GetValue 对几何列不成功的主要内容,如果未能解决你的问题,请参考以下文章