数据大概率更新失败的情况 返回

SqlSugar 沟通中
2 159
  //保存角色存档数据
  public async Task<bool> SaveCharacterSaveData(string UserName, string CharName, byte[] SaveData)
  {
      var userEntity = await _userManager.GetValidUser(UserName);
      if (userEntity == null)
      {
          return false;
      }

      var CharEntity = await _characterRepository.FindAsync(x => x.UserId == userEntity.Id && x.CharName == CharName);
      if (CharEntity == null)
      {
          return false;
      }

      CharEntity.CharSaveData = SaveData;

      if (!await _characterRepository.UpdateAsync(CharEntity))
      {
          throw new UserFriendlyException(details: "角色存档失败", message: "更新角色数据失败");
      }

      return true;
  }

  //保存角色肖像信息数据
  public async Task<bool> SaveCharacterInfo(string UserName, string CharName, int CharClass, int CharLevel, int CharExp, byte[] CharPortrait)
  {
      var userEntity = await _userManager.GetValidUser(UserName);
      if (userEntity == null)
      {
          return false;
      }

      var CharEntity = await _characterRepository.FindAsync(x => x.UserId == userEntity.Id && x.CharName == CharName);
      if (CharEntity == null)
      {
          return false;
      }

      CharEntity.CharPortrait = CharPortrait;
      CharEntity.CharClass = CharClass;
      CharEntity.CharLevel = CharLevel;
      CharEntity.CharExp = CharExp;

      await _characterRepository.UpdateAsync(CharEntity);

      return true;
  }

上面是我实现的两个函数,当API 请求保存数据时,SaveCharacterSaveData 的更新会很大概率没有写入到数据。但是返回是成功的。

SaveCharacterSaveData  先被调用 接着马上 SaveCharacterInfo 会被调用。SaveCharacterInfo  的更新每次都能成功,SaveCharacterSaveData  的数据越大失败的情况越大

我使用的 ABP 框架, 封装的仓储

热忱回答2

  •         //保存角色存档数据
            public async Task<bool> SaveCharacterSaveData(string UserName, string CharName, byte[] SaveData)
            {
                var userEntity = await _userManager.GetValidUser(UserName);
                if (userEntity == null)
                {
                    return false;
                }
    
                var CharEntity = await _characterRepository.FindAsync(x => x.UserId == userEntity.Id && x.CharName == CharName);
                if (CharEntity == null)
                {
                    return false;
                }
    
                CharEntity.CharSaveData = SaveData;
    
                _characterRepository._Db.Updateable(CharEntity).UpdateColumns(x => x.CharSaveData).ExecuteCommand();
    
                //if (!await _characterRepository.UpdateAsync(CharEntity))
                //{
                //    throw new UserFriendlyException(details: "角色存档失败", message: "更新角色数据失败");
                //}
    
                return true;
            }

    我改成原生的语句执行也是一样的结果

    0 回复
  • fate sta fate sta VIP0
    1个月前

    不清楚你的业务,有问题抽像成DEMO

    0 回复