在更新时删除缺失的后代



我有以下方法在我的控制器:

[HttpPost]
public async Task<ActionResult<ChartsCategoryDto>> PostChartsCategory(ChartsCategoryDto chartsCategory)
{
try
{
var category = _mapper.Map<ChartsCategoryDto, ChartsCategory>(chartsCategory);
if (category.Id == 0)
{
category = _context.ChartsCategories.Add(category).Entity;
await _context.SaveChangesAsync();
return CreatedAtAction("GetChartsCategory", new { id = category.Id }, _mapper.Map<ChartsCategory, ChartsCategoryDto>(category));
}
else
{
_context.ChartsCategories.Update(category);
await _context.SaveChangesAsync();
return NoContent();
}
}
catch (Exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, "Error updating data");
}
}

应该处理名为ChartsCategory的实体的创建和更新,该实体具有Charts的集合:

public partial class ChartsCategory
{
public ChartsCategory()
{
Charts = new HashSet<Chart>();
InverseParent = new HashSet<ChartsCategory>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Label { get; set; }
public string Icon { get; set; }
public int? ParentId { get; set; }
public virtual ChartsCategory Parent { get; set; }
public virtual ICollection<Chart> Charts { get; set; }
public virtual ICollection<ChartsCategory> InverseParent { get; set; }
}
  1. 当我创建一个新的实体-一切工作如预期
  2. 当我更新一个现有的实体-一切工作如预期。
  3. ChartCategory中更新或创建单个Chart-如预期。
  4. ChartsCategory中删除Chart不起作用

我希望Update()功能能够删除缺失的项目。我找到了这个答案,但它似乎有点太明确了。我想全局声明后代项必须被发送,否则它应该被删除。

感谢

我认为在第一种情况下,检索到的用户没有被上下文跟踪。


_context.ChartsCategories.AsNoTrcking.Remove(category);

相关内容

  • 没有找到相关文章

最新更新