【问题标题】:Error: The object cannot be deleted because it was not found in the ObjectStateManager. c#错误:无法删除该对象,因为它在 ObjectStateManager 中找不到。 C#
【发布时间】:2013-01-07 20:11:48
【问题描述】:

我正在尝试从表 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;
    }

【问题讨论】:

标签: c# asp.net


【解决方案1】:

要使用 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);

【讨论】:

    猜你喜欢
    • 2021-12-07
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多