首页 > 解决方案 > SqlDataReader.GetValue 对几何列不成功

问题描述

当我在使用几何类型的表上有一个 SqlDataReader 时,reader.GetFieldType(index)返回 null 并reader.GetValue(index)导致

System.IO.FileLoadException:'无法加载文件或程序集'Microsoft.SqlServer.Types,Version=10.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)'

我尝试添加 nuget 包 Microsoft.SqlServer.Types v14.0.1016.290,但这并不能解决问题。

标签: sql-servertsqlspatial

解决方案


我还没有使用过该geometry类型,只需阅读文档即可。表示坐标系中的geometry一个点,它以二进制形式存储。所以试试这个:

SqlGeometry geometry = new SqlGeometry();
geometry.Read(new BinaryReader(reader.GetSqlBytes(index).Stream));

推荐阅读