手贱玩坑自己填:ExecuteNonQuery返回-1

最近手贱,将Oracle.ManagedDataAccess升级到19.12.0,原来运行正常(其实有问题)的代码忽然出问题了。

后来一条是发现所有BEGIN END包裹的UPDATE语句,现在都是返回-1,而不是想要的影响的行数了。

其实我所使用的DotNet.Util的底层类库中ExecuteNonQuery();默认值就是-1.

var result = -1;

并且呢,本来ExecuteNonQuery()在执行UPDATE、INSERT以及DELETE语句时,返回值为该命令所影响的行数。这是这个方法的建议用法。

如果用这个执行SELECT语句,不会返回影响的行数或者记录,而返回-1,不论查询结果有没有记录都会返回-1。

同理,如果执行任何CREATE、ALTER、TRUNCATE创建/修改/删除表、字段、索引等语句,同样返回-1。

既然明白了原理,但还得使用一次性多个SQL一起执行,没办法的办法,只能硬着头皮,用个馊主意。

针对BEGIN END的调用,明确知道包含BEGIN END的,就返回一个绝对值,代表成功了。

//return result;
//return -1 if BEGIN END
return Math.Abs(result);

我知道这样做不对,不好。

谁有好办法,分享下。

比方说现在EF里面的做法,或者ORM这些怎么处理的?

等我有时间去研究下SqlSugar或者FreeSql这类ORM看看他们怎么处理的。

跟老板学管理#4:人和企业搞钱的办法只有6种!

有一天一个大佬老板酒喝多了,吐真言说:如果知识真得可以换取最大的财富,那么中国富豪榜上的富豪们都应该是博士、博士后、院士。而如果勤劳真得可以致富,那中国首富、世界首富一定是一头牛或者一头驴。

接着问我:你看很多人整天嚷嚷着我要赚钱,我要搞钱。你知道世界上搞钱的方法有哪些吗?

我笑而不语,因为我真不知道。

他接着说:要么去抢,要么去偷,要么去骗,要么去赌,要么去捡,要么去解决问题、创造价值,你就能变得富有。

我一听:怎么有那么多种?

他见我迟疑了一下,继续补充道:这6个方法中,除了最后一个,其它的全部是非法或者犯法的。所以呀,最终方法只要一个:用点心,关心身边的一切,找到一个你能解决的问题,并且想办法,把你的解决方案不断的优化、深入、放大、复用,为了解决问题而学习,并不断探索、运用工具来放大收益,这才是获取财富的正确办法。

我频频点头,他继续补充道:你看看周边的例子,那些赚了大钱的怎么解决问题、创造价值的?

当时就这个话题,他也举了很多例子,我愈加相信这个总结的普适性。

你认同吗?