事务里面调用方法 返回

SqlSugar
18 122

一个事务里面调用方法,方法里面插入数据

中间异常抛出

图片.png

Demo.zip

执行第一次,没有插入数据,再执行一次,数据插入了

热忱回答18

  • BIN和OBJ 以后上传的时候删掉,太占空间了一个文件

    0 回复

  •     public void AddProduct(AddProductInput input)
           {
               var isExist =  _product.Any(u => u.ProductCode == input.ProductCode || u.ProductName == input.ProductNameFull);
               if (isExist)
                   throw Oops.Oh(ErrorCode.D1006);

               var role = input.Adapt<Product>();
             
                _product.Context.Insertable(role).ExecuteCommandAsync();
           }


    同步方法里面不要写异步,没有await就不要写异步

    0 回复
  • 改成同步的话,结果一样,还是会插入数据,BIN和OBJ 已经删掉了呀

    GeneralWms-master.7z


    0 回复
  • @水墨阡:文件无法打开 请上传zip

    0 回复
  • 还有你的DEMO太复杂了我连接字符串都不知道哪儿配

    0 回复
  • 表都没有,跟本跑不通

    0 回复
  • https://www.donet5.com/Home/Doc?typeId=2366 按提问题模版写DEMO

    0 回复
  •   services.AddSingleton(typeof(SqlSugarRepository<>));

      services.AddSingleton(typeof(SqlSugarRepository));

    仓储不应该单例注入,只有DB才是单例,光看代码看不出问题

    0 回复
  • @fate sta:为什么不能是单例?有什么原因吗?那应该定义成什么?

    0 回复
  • @fate sta:连接字符串在dbsettings里面

    0 回复
  • @fate sta:表的话就两张表,就两个字段,看实体就行

    0 回复
  • 你的DEMO可以回滚不清楚你自已测过没有


    插入后

    BO]O[_3VS_CNM67VABHP5ZV.png

    上面刚插入查询的数据


    下面是回滚后


    image.png

    0 回复
  • SELECT * FROM WmsProduct WITH(NOLOCK)//可以无视事务锁查询
    0 回复
  • @fate sta:第一次确实可以回滚,但是第二次就插入数据了,您可以试下

    0 回复
  •             services.AddSingleton<ISqlSugarClient>(sqlSugar);
                // 注册 SqlSugar 仓储
                services.AddScoped(typeof(SqlSugarRepository<>));
                services.AddScoped(typeof(SqlSugarRepository));

    这么改就可以了,仓储静态引起的

    0 回复
  • 之前已经说过了仓储不要静态

    0 回复
  • 你的变量还存着上次的db,而不是从新在SqlSugarScope里面重新获取

    0 回复
  • 原来如此,领教了,感谢您的热情解答

    @fate sta

    0 回复