csharp 更新相关子实体
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 更新相关子实体相关的知识,希望对你有一定的参考价值。
public override async Task<UserCategoryDto> Update(UserCategoryDto input)
{
CheckUpdatePermission();
var existingEntity = await Repository.GetAll().Include(x => x.Items).FirstOrDefaultAsync(x => x.Id == input.Id);
if (existingEntity != null)
{
// Update parent
Repository.GetDbContext().Entry(existingEntity).CurrentValues.SetValues(ObjectMapper.Map<UserCategory>(input));
// Delete children
foreach (var existingChild in existingEntity.Items.ToList())
{
if (input.Items.All(c => c.Id != existingChild.Id))
existingEntity.Items.Remove(existingChild);
}
// Update and Insert children
foreach (var itemDto in input.Items)
{
var existingChild = existingEntity.Items.SingleOrDefault(c => itemDto.Id > 0 && c.Id == itemDto.Id);
if (existingChild != null)
{
// Update child
var item = ObjectMapper.Map<UserCategoryItem>(itemDto);
Repository.GetDbContext().Entry(existingChild).CurrentValues.SetValues(item);
}
else
{
// Insert child
var item = ObjectMapper.Map<UserCategoryItem>(itemDto);
existingEntity.Items.Add(item);
}
}
await CurrentUnitOfWork.SaveChangesAsync();
}
return MapToEntityDto(existingEntity);
}
以上是关于csharp 更新相关子实体的主要内容,如果未能解决你的问题,请参考以下文章
使用 EF Core 保存附加实体时如何删除子实体
从父实体更新子实体
Spring JPA:使用更新的子实体更新实体
在 EF 中更新父实体时如何添加/更新子实体
当微风子实体更新父实体状态不改变时
如何更新CoreData中另一个实体的子实体