在core项目下通过Dapper对mysql执行批量操作一直报异常
报PushService=>UpdateKeyWordProductCountTask=>错误信息:Fatal error encountered during command execution.;;;堆栈信息: at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2848
at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 581
at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 452
at Infratructure.Persistence.Repository.SyncProResponsity.EditUrlKeyWords(IList`1 strSqls) in /src/Infratructure/Repository/Responsity.cs:line 80
at SpzsPushService.Worker.<>c__DisplayClass14_0.<UpdateKeyWordProductCountTask>b__0() in /src/PushService/Worker.cs:line 649
最后排查出问题是因为在core封装的Dapper在执行批量操作的时候会判断你传的参数,参数为null会按照单条执行,参数不为null按照批量执行
最终执行是应该以下格式处理
以下是其他的执行语句格式
Dapper-Execute
Ececute是一种可被任何IDbConnection类型的对象调用的扩展方法。它可以执行一次或多次命令, 并返回受影响的行数。此方法通常用于执行存储过程、插入、更新、删除
存储过程
单次执行
多次执行
插入
更新
删除
Dapper 批量更新
1.使用Where In 实现批量更新
2.更新多条数据,每一条数据更新的内容可不相同
执行语句摘抄至:https://www.cnblogs.com/ys9527/p/10524380.html
标签:core,批量,MySqlCommand,MySqlClient,SqlMapper,cs,Dapper,执行,line From: https://www.cnblogs.com/dingdingyiyi/p/17635578.html