一切福田,不離方寸,從心而覓,感無不通。

DapperExtensions扩展,一个不再更新的小众类库的踩坑之路

公司一个项目要从.net framework平台转成.net core平台,都是为了跨平台啊。

老的项目中用了个小众的类库:DapperExtensions。

有个同事直接nuget安装了该类库的.net core版本:DapperExtensions.NetCore,然后一直报错;于是向我求助。

报错代码如下图:
3aa6c816-bbe1-11ec-bc26-268ba276047f

报错信息:
59fef348-bbdf-11ec-bc08-562431768f39

P.S 同事用的是异步调用,同步调用是没问题的。

由于此类库不再更新,官网也没有了……也找不到文档;

在网上很少的资料中,都是些简单的示例,使用的都是同步调用,但同事用的是异步调用。我们一块折腾了半个上午,也没解决。但还不想放弃啊……于是又双叒叕重新撸了n遍,豁然发现:生成的MySQL语句里怎么会有中括号!灯下黑~……

于是,网上一通搜,终于找到一篇说SQL方言的文档,看了一下DapperExtensions的源码,发现也有设置SQL方言的方法:

运行……还是报错……%~@#¥,没起作用!无奈……拉倒吧,把代码改为同步调用吧。

还是不想放弃,再看一眼吧——竟然发现DapperExtensions的源码中异步方法和同步方法的SQL方言竟然是单独设置的,这类库设计的也没谁了……,于是设置了一下异步的SQL方言为MySQL,终于解决了。代码如下:

 

总结:

  1. 不要使用小众类库,尤其是个人开发的。因为出了问题太难解决了。
  2. 解决问题要细心,更要有耐心;放空思想,从头多撸几遍。
  3. 小众类库的代码设计考虑不周:
    a. 比如说,代码已经写为new MySqlConnection(ConnString),SQL方言就应该自动设置为MySQL了。
    b. 另一个,对于SQL方言,设置一次就行了,不应该设计成异步要单独设置。

 

解决过程实属不易,希望能帮助大家,谢谢~