1

テーブルからデータを削除しようとして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;
    }
4

1 に答える 1

0

EntityFramework を使用してレコードを削除するには、オブジェクトが EF ObjectStateManager 内にあるという点で、EntityFramework を使用してデータベースからレコードを取得する必要があります。

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);
于 2013-01-07T20:16:30.260 に答える