在事物中使用更新报错 返回

SqlSugar 沟通中
10 125
该叫什么 发布于2周前
悬赏:0 飞吻

报错信息:{"Operation is not valid due to the current state of the object."}

await _db.Updateable<ProcessInstanceEntity>()
    .SetColumns(t => new ProcessInstanceEntity() { ProcessStatus = 2, AuditStatus = 2, FinishDateTime = DateTime.Now, StatusName = statusName })
    .Where(t => t.Piid == processInstanceEntity.Piid)
    .ExecuteCommandAsync();

使用SetColumns会报这个错误。

使用

_db.Updateable(entity).UpdateColumns 不会报错


热忱回答10

  • 要以提供一个完整DEMO,就当前代码看不出问题

    0 回复
  • 大概率是线程安全问题或者异步用法错误

    var newDb=db.CopyNew();

    newDb.BeginTran();

    newDb.Updatexxx

    newDb.Commit();


    这样试试保证是一个新的db并且事务开始和事务结束都是用的一个对象

    0 回复
  • 夜 VIP0
    2周前

    demo没法整。牵连的东西太多

    刚开启事物,直接执行第一个Update直接报错。。。SqlSugarClient是Scope方式注入。

    image.png

    image.png

    0 回复
  • 夜 VIP0
    2周前

    image.png

    0 回复
  • 夜 VIP0
    2周前

    有没有可能是因为这个引起的

    image.png

    0 回复
  • @夜

    var newDb=db.CopyNew();

    newDb.BeginTran();

    newDb.Updatexxx

    newDb.Commit();

    按我这样改了试一下,还有疑问就写个可以重现的DEMO

    0 回复
  • 夜 VIP0
    2周前

    我看有序列化的操作,是不是因为这个类JsonElement序列化报错

    0 回复
  • 夜 VIP0
    2周前

    @fate sta:不用异步也会报错。

    是不是

    _db.Updateable(entity).UpdateColumns()

    这种方式底层没有序列化操作。所以不报错?


    而使用SetColumns底层有序列化操作,而JsonElement对象序列化不了。我尝试一下JsonElement序列化看看报错不吧

    0 回复
  • 夜 VIP0
    2周前

    image.png

    image.png

    直接序列化报错,应该是没有忽略循环引用的原因

    0 回复
  • 夜 VIP0
    2周前

    只能修改字段类型了,谢谢

    0 回复