如何解决更新 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 举报,一经查实,本站将立刻删除。