自己orm框架的一个旷世大BUG!自己都恶心死了。

错误的现象是空指针,在orm的list删除一个对象的时候发生的。

 

首先把所有项目都源代码都放在一起看,最后找到空指针的问题:

ormobject.removefromlist。产生了一个插数据库操作,但是这个操作的对象的uniquekey没有赋值,导致数据库错误,这个错误被log记录,但是log。。(log里面由于select的时候没有把对方添加到内存,)记录error 的时候,log开启了ip,导致空指针。

 

解决是解决了,可是为什么会出现插入数据库的操作?

removefromlist, 在aop里面会调用
proxyList = ObjConvertor.Instance.ObjListToProxyList(value as IList);
把输入参数转化为proxy

如果buffer没有对应的对象如果对象的proxy不存在,那么这个方法会自动创建一个proxy,这个时候就导致了插入数据库操作(sqlserver又会认为空的uk为重复,导致了log的出错)

 

找到问题了,那么问题就是,为什么对象的proxy不存在

select的bug,如果出现2个数据,select返回是null!!!

 

由于ormobj的list里面保存了2个对象的upk都是相同的,导致select的时候,返回2个结果,但是程序自动判断,返回null。导致了这个复杂的bug!!!!

 

又由于返回了null,proxy=null,但是aop没有判断空指针返回,因此再次传递给了proxytoobject,这个时候,object就有了空的proxy,导致了出错!

 

靠!!!!!!!!!!恶心到自己都想吐。。。这么垃圾的代码怎么可能是我写的。嗨。。。

 

现在还有另外一个大bug,在withdraw数据的时候,服务器报500错误,查看日志依然是违反了Unique约束,估计仍然是个bug

posted @     阅读(436)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
IT民工
点击右上角即可分享
微信分享提示