问题描述
我将 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 (将#修改为@)