【发布时间】:2022-01-13 06:43:08
【问题描述】:
我可以添加,但不能删除集合中的任何项目 - 无法删除。
找到了一些部分解决方案,但没有任何东西可以指导我找到可行的解决方案。我可以轻松地将值添加到集合中;感谢您的帮助。
我有以下几点:
[HttpPut("updateSOJ4")]
public IActionResult UpdateSOJ4([FromBody] Routing_Tool_SOJ4 Routing_Tool_SOJ4)
{
Routing_Tool_SOJ4 request = new Routing_Tool_SOJ4();
request.Id = Routing_Tool_SOJ4.Id;
request.Routing_Tool_Services = Routing_Tool_SOJ4.Routing_Tool_Services;
request.Routing_ToolId = Routing_Tool_SOJ4.Routing_ToolId;
_repository.UpdateSOJ4(request);
return Ok(request);
}
这是我尝试不同解决方案的地方,但我仍然卡住了:
public void UpdateSOJ4(object routing_Tool_SOJ4)
{
// var missingItem = _context.Routing_Tool_Service.Where(i => i.Routing_Tool_SOJ4Id == _context.Routing_Tool_SOJ4.Id).First(); -- DOES NOT WORK
_context.Update(routing_Tool_SOJ4).State = EntityState.Modified;
_context.SaveChanges();
}
这是数据库结构:
public class Routing_Tool_SOJ4
{
[Key]
[Required]
public int Id { get; set; }
public int Routing_ToolId { get; set; }
[ForeignKey("Routing_ToolId")]
public virtual Routing_Tool Routing_Tool { get; set; }
public virtual ICollection <Routing_Tool_Service> Routing_Tool_Services { get; set; }
}
收藏:
public class Routing_Tool_Service
{
[Key]
[Required]
public int Id { get; set; }
public string ServiceName { get; set; }
[Required]
[ForeignKey("Routing_Tool_SOJ4Id")]
public int Routing_Tool_SOJ4Id { get; set; }
}
【问题讨论】:
-
你检查过这个答案 - stackoverflow.com/a/22381952/1461862 吗?
-
是的,我有。集合作为 JSON obj 发送,我看不到如何分配它来擦除相关项目。
-
如果我理解正确,您需要将 JSON 数组反序列化为您自己的类型/集合才能删除某些项目 - stackoverflow.com/questions/16856846/…
-
这个方法 public void
UpdateSOJ4(object routing_Tool_SOJ4)是否收到所有新项目或需要删除的项目? -
它得到一个项目。如果该项目存在,则获取更新,如果不存在,则将其删除。我读过的最接近的解释stackoverflow.com/questions/51331850/…,但是“(i => i.Routing_Tool_SOJ4Id == _context.Routing_Tool_SOJ4.Id)”失败了。
标签: c# entity-framework-core ef-core-2.0