我有以下方法在我的控制器:
[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
的实体的创建和更新,该实体具有Chart
s的集合:
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; }
}
- 当我创建一个新的实体-一切工作如预期
- 当我更新一个现有的实体-一切工作如预期。
- 在
ChartCategory
中更新或创建单个Chart
-如预期。 - 在
ChartsCategory
中删除Chart
不起作用
我希望Update()
功能能够删除缺失的项目。我找到了这个答案,但它似乎有点太明确了。我想全局声明后代项必须被发送,否则它应该被删除。
我认为在第一种情况下,检索到的用户没有被上下文跟踪。
_context.ChartsCategories.AsNoTrcking.Remove(category);