DbScoped.SugarScope 发现没办法保证一致性 返回

SqlSugar 老数据
4 3653
该叫什么 白纸 发布于2021/8/30
悬赏:5 飞吻

 SqlSugar.SqlSugarScope db = DbScoped.SugarScope;

使用 Sqlsugar 注入最新方式,我发现我每个class像这样子直接获取db对象,好像没办法rollback,

我开启事务也没办法,感觉都是单独执行,这要怎么修正才开保证一致性;

以下是我代码的写法,我需要调整什么才可以保证呢

class A

{

     SqlSugar.SqlSugarScope db = DbScoped.SugarScope;

    public void b(){

    try{

    db.BeginTran();

    

db.CommitTran();

}catch(){

    db.Rollback();

}

}

}

热忱回答4

  • 1.db.BeginTran();

    2. 代码

    3. db.CommitTran();

     必须要在同一个上下文才能有效果 ,如果有疑问可以写个DEMO

    0 回复
  • 如果不能回滚或者提交大概率是 1 2 3 的 db.contextid不一样

    0 回复
  •         public class Test001 
            {
                public int id { get; set; }
            }
    
            [HttpGet]
            public object Get()
            {
                var db=DbScoped.SugarScope;
                db.CodeFirst.InitTables<Test001>();//建表
                int trancount = 0;
                int rollbackcount = 0;
                db.BeginTran();
    
                db.Insertable(new Test001() { id = 1 }).ExecuteCommand();
                trancount = db.Queryable<Test001>().Count();
                db.Insertable(new Test001() { id = 1 }).ExecuteCommand();
                trancount = db.Queryable<Test001>().Count();
                db.Insertable(new Test001() { id = 1 }).ExecuteCommand();
                trancount = db.Queryable<Test001>().Count();
    
                db.RollbackTran();
                rollbackcount= db.Queryable<Test001>().Count();
                return new { trancount= trancount, rollbackcount= rollbackcount };
            }

    完整用例,插入3条回滚成功

    image.png

    0 回复
  • 如果有疑问像上面给我一个能重现的用例

    0 回复