更新 EF Core 后获取新的 RowVersion

问题描述

我将 EF Core 与 dbContext 一起使用,该 dbContext 为实体之一设置了 RowVersion。我想要做的是使用 dbContext.Update(object) 更新对象列表。然而,我想用新的 RowVersions 返回新更新的对象,而无需再次从数据库中加载它们。

  using var dbContext = _dbContextService.CreateDbContext<DataFactoryDbContext>();

      var dataset = await dbContext.Datasets.Include(ds => ds.Fields)
        .FirstOrDefaultAsync(ds => ds.InstanceId == command.ClassificationId);

      var datasetFields = dataset.Fields.ToDictionary(t => t.InstanceId,t => t);

      foreach (var fieldViewModel in command.Fields) //Iterate through fields and check that the rowVersions match
      {
        var fieldModel = datasetFields[fieldViewModel.InstanceId];

        var rowVersion = fieldModel.RowVersion.ToBase64String(); 
        Assertion.RowVersionCheck(fieldViewModel.RowVersion,rowVersion,"At least one of the fields have changed since loading the screen. Please refresh and try again");
      }

      foreach (var fieldViewModel in command.Fields) //Iterate through fields and update sequences
      {
        var fieldModel = datasetFields[fieldViewModel.InstanceId];
        fieldModel.Sequence = fieldViewModel.Sequence;
        fieldModel.RowVersion = fieldViewModel.RowVersion.FromBase64String(); 

        var test = dbContext.DatasetFields.Update(fieldModel);

        var newViewModel = new DatasetFieldSlimViewModel()
        {
          RowVersion = test.Entity.RowVersion.ToBase64String() //Get new rowversion here maybe?
        };
      }

      await dbContext.SaveChangesAsync();
      return listOfNewViewModels //I need to return a new list of viewmodels with the Updated RowVersions without reloading the models from db;
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...