错误:对象不能被删除,因为它在ObjectStateManager中找不到.c#
本文关键字:ObjectStateManager 找不到 因为 对象 不能 删除 错误 | 更新日期: 2023-09-27 17:50:59
我试图从表Ent_El_Tags{entel_id,tag_id}
中删除数据,当我将删除函数应用于我声明如下的关系时,我面临错误,但它适用于添加功能。
[HttpPost]
public List<Ent_El_Tags> AddTagsToElements([FromUri]ParamsClass parameters)
{
var relationships = new List<Ent_El_Tags>();
foreach (var el in parameters.element_ids)
{
foreach (var t_id in parameters.tag_ids)
{
var relationship = new Ent_El_Tags { entel_id = el, tag_id = t_id };
relationships.Add(relationship);
_context.Ent_El_Tags.Add(relationship);
}
}
_context.SaveChanges();
return relationships;
}
[HttpPost]
public List<Ent_El_Tags> DeleteTagsToElements([FromUri]ParamsClass parameters)
{
var relationships = new List<Ent_El_Tags>();
foreach (var el in parameters.element_ids)
{
foreach (var t_id in parameters.assigned_ids)
{
var relationship = new Ent_El_Tags { entel_id = el, tag_id = t_id };
relationships.Add(relationship);
_context.Ent_El_Tags.Remove(relationship);
}
}
_context.SaveChanges();
return relationships;
}
要使用EntityFramework删除记录,您需要使用EntityFramework从数据库中获取记录,因为该对象将在EF ObjectStateManager中。
var relationship = new Ent_El_Tags { entel_id = el, tag_id = t_id };
_context.Ent_El_Tags.Remove(relationship);
用
代替var relationship = _context.Ent_El_Tags.Where(x=>x.enterl_Id==el && x.tag_id==t_id).FirstOrDefault();
_context.Ent_El_Tags.Remove(relationship);