首页 > 其他分享 >IComparable踩坑记

IComparable踩坑记

时间:2023-06-10 17:11:28浏览次数:27  
标签:坑记 对象 代码 Id 报错 IComparable 返回值 bug

前序:时隔三个月,我回到了博客园。
我接手了一个老项目代码,老手开腾讯会议告诉我核心代码意义,在操作后台系统下拉框选择某个作物类型的时候,出现bug了,数据列表不会筛选。
这是正常的情况:

当选择“南方水稻”类型时,出现bug了,列表不刷新,意味这“南方水稻”的返回的数据有问题:

报错:

错误信息很明显,返回值某个对象没有Name属性,准确说就是没有这个对象,仔细看看返回值和正常的相比没有CopyType对象了,估计就是CopyType.Name报错。
在后台接口的返回值处打断点:

从断点上看,返回的值确确实实是有CopyType对象的!但为什么前端就接收不到呢???
我注意到返回值被Json化,网上也搜到说Json会导致循环引用,然后报错,但是也没有出现Self字样呀!我在想循环引用是返回的对象包含的对象中有相同的字段,或者实体之间相互引用了。但是都没有,在我一头雾水的时候,返回值两个对象的Id值是一样的,我猜想是不是Id一样才会报错,然后测试验证确实如此。网上没有搜到这样情况,说明大概率是代码中有bug。
我翻到BaseModel类,继承了IComparable,有一行代码引起我的注意:

不难看出是实体和实体的Id比较,我很强烈感觉就是这里因为Id相等被过滤掉了,我注释掉真的对了。我想只有类型相同的实体才有比较Id的意义,然后我把代码改成:

最后列表正常了。
据老手说以前不会有这个bug,可能是最近由EF切到EF core框架差异导致。

标签:坑记,对象,代码,Id,报错,IComparable,返回值,bug
From: https://www.cnblogs.com/long-live/p/17471575.html

相关文章

  • OSM踩坑记录
    1.下载数据从https://www.openstreetmap.org/下载数据(如'map.osm')2.转换格式安装gdal,我用的cudacondainstall-cconda-forgegdal如果报错可能需要回到base(退出虚拟环境)再更新一下condacondaupdate--all 然后转换数据,从osm到geojsonogr2ogr-fGeoJSONmap......
  • 记一次go项目踩坑记录
    错误描述在go项目中创建了一个脚本,编写了一个main函数其中用到了一个modelgithub.com/link1st/go-stress-testing/stressimport("fmt"//"github.com/dji/go-stress-testing/stress" "github.com/link1st/go-stress-testing/stress""net/http&......
  • mongodb c++ driver安装踩坑记
     安装教程:https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/installation/(1)“initializer_list”filenotfoundhttp://stackoverflow.com/questions/19493671/initializer-list-no-such-file-or-directorySinceyouareusing GCC-4.8 andyourproblemisthatyoud......
  • 考古笔记7:静态路由与联网(完整实验过程+爬坑记录)
    先上结论汇总配置过程:(无坑结论)爬坑历程拓扑配置R1:SW:PC侧验证问题1重启下交换机sw1;未解决,尝试端口重启;未解决尝试给SW1的vlan10和vlan20分配物理端口尝试f0/14连接一个host主机试试;连接的host不需要配置IP地址;重启SW1(似乎host开不开机都无所谓)删除f0/14和f0/15的Host;重启SW1解答看......
  • 夏令时踩坑记录二
    一、现象描述第三方数据上传,上传上来发现有一个人的出生日变成了1991-07-1523:00:00。这个时间明显不对,理论上这个的生日是1991年7月16号。曾经踩过夏令时的坑,一看这个就知道应该是夏令时时区转换导致时间相差一个小时。二、问题分析与解决2.1数据流转说明欲分析是哪里出现了......
  • 【踩坑记录】autojs使用while(1)导致broadcast无法正常执行
    autojs中的死循环操作最好使用setInterval而不是,while(1)。 while(1)会导致其他语句无法执行,这里面包括了信号相关的,比如今天踩得坑: 用events.broadcast.emit发出信号后,相应的on语句无法正常执行,后来才发现原来是为了一个用while(1)来执行死循环导致整个线程全部死在了这里,......
  • Cypress 踩坑记 - DOM 遮挡
    Cypress是一个非常流行的测试工具,然而实际使用过程中发现一些问题,这里做些记录。问题发现在Cypress下click是非常常用的指令,然而在一些特殊场景下click并不能如想象中那般正常工作。比如现在有一个弹窗,我们需要测试在点击遮罩层时是否可以正常关闭弹窗。测试代码比......
  • Rocky 9 Linux 平台 vim 9.0 源码包编译安装踩坑记录
    目录vim9.0部署准备环境vim9.0源码包正式部署vim9.0初体验plug-vim安装插件在上一篇《vim入门实战》篇,我并没有介绍Linux平台源码包形式安装以及基础运用。本篇教程,以源码包形式部署vim9.0,演示RockyLinux9平台安装vim9.0.1523,目前最新版为vim9.0.15xx。如......
  • 瑞吉外卖项目踩的几个小坑记录
    1.不知道前端发送过来的请求是以json格式还是以普通数据格式发送。这方面是用浏览器的调试工具查看,找到network选项卡,然后点击playload选项卡查看,如下图 如果数据是一行一行显示的,则是普通格式;如果是以{}括号引用起来的,则是JSON格式。2.在开发功能时,将菜品对应的名字起为:......
  • tornado服务端+tornado.ioloop.PeriodicCallback定时任务踩坑记录及解决方案
    背景:用tornado部署一个AI模型的服务端,由于AI模型较慢,收到请求肯定没办法同步返回结果,所以最后定的方案是批处理并异步回调。异步回调下,我这边的处理方式是:实时接收所有请求并多线程落库(使用数据库连接池),再启动一个定时任务取出库中(未处理过的)数据进行批处理。因为web框架用的是tor......