• .net core 2.1环境下ADO.NET 报错DataReader.GetFieldType(46) returned null.问题


    最近在写一个.net core 2.1项目时。用ADO.NET 连接数据库在对某张表进行查询时发生DataReader.GetFieldType(46) returned null.(第46个字段(从0开始计)在尝试获取类型的时候返回了null空值)报错。(别问我为什么用ADO.NET连数据库。这项目用EFCore连第一个数据库,ADO.NET连第二个数据库。也别问我为什么要这样做,我也不知道,我拿来改的)

    经调试发现数据库表里第46个字段类型为:geography  ---下图为geography 字段说明

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

     -------------------------------------------------------------------------------------------------------------------------------------------------------------

      这个数据类型导致了SqlDataAdapter 在Fill DataTable的时候报错。因为datatable没这个类型所有在获取FieldType时报错。

    有大佬建议我先在不获取FieldType的情况下先fill一次看看,然后尝试读读对应的dataitem里面是什么内容,再去决定转化的方法。

    我觉得麻烦,所以决定不用SqlDataAdapter模式,改为SqlDataReader 解决类型报错问题。

    另外geography数据类型在.NET Framework下对应类型为DbGeography。在 System.Data.Entity.Spatial命名空间下。应该是.NET Framework4.5之后才有支持的

    而.net core无DbGeography类型。不知道是未支持还是微软更换了类型名。总之在.net core官方文档里未找到DbGeography类型

    另外.net core下如果要修改这个字段值该如何写?这个因为项目没有要求对这个字段进行修改新增,所以不得而知,有空研究下。

  • 相关阅读:
    [HDU 1003] Max Sum
    Codeforces
    2016 年宁波工程学院第七届ACM校赛题解报告
    [DP] Light Oj 1017 Brush(III)
    GDUT-校赛-积水积木
    1031 Hungar的得分问题(二)
    HDU 1506 Largest Rectangle in a Histogram
    lightoj 1033 Generating Palindromes
    网络编程总结
    生产者消费者模型
  • 原文地址:https://www.cnblogs.com/objectnull/p/13434305.html
Copyright © 2020-2023  润新知