UPDATE statement contrary to FOREIGN KEY restrictions in asp.net mvc 5

I get this error:

The UPDATE operation contradicted the FOREIGN KEY constraint "FK_TitleMember". The conflict occurred in the database "ParishDBSQL", the table "dbo.Titles", in the column "title_id". Application completed.

controller

Get action

public ActionResult Edit(int? id)
    {
       var member = (from h in db.Members
       join f in db.Titles on h.title_id equals f.title_id
                       where h.m_id == id
                      select new
                      {
                          title_id = h.title_id,
                        }).First();
var viewmodel = new MembersViewModel();
        viewmodel.title_id = member.title_id;
ViewBag.Titles = new SelectList(db.Titles.ToList(), "title_id", "Titles", viewmodel.title_id);

return View(viewmodel);

    }

Action Message

public ActionResult Edit(MembersViewModel vm)
    {
        if (ModelState.IsValid)
        {
var member = db.Members.Find(vm.m_id);
          member.title_id = vm.title_id;
   ViewBag.Titles = new SelectList(db.Titles.ToList(), "title_id", "Titles", vm.title_id);

                db.Members.Attach(member);
                db.Entry(member).State = EntityState.Modified;    
 db.SaveChanges();

                return RedirectToAction("Index");

        }

        return View(vm);

View

  <div class="col-md-4">
             <div class="form-group">
                <label>Title</label>

                @Html.DropDownList("Titles")
                @Html.ValidationMessageFor(model => model.title_id)
            </div>
        </div>

Model

 public partial class Title
    {
    public Title()
    {
        this.Heads = new HashSet<Head>();
        this.Members = new HashSet<Member>();
    }

    public int title_id { get; set; }
    public string Titles { get; set; }

    public virtual ICollection<Head> Heads { get; set; }
    public virtual ICollection<Member> Members { get; set; }
}

ViewModel

public class MembersViewModel
{
    public int m_id { get; set; }
    public string titles { get; set; }
    public int title_id { get; set; }
}

I want to update the title_id using the drop-down list in the table of tables of my members, but I get the error shown above.

+4
source share
2 answers

I think the error in this line

member.title_id = vm.title_id

vm.title_id .

, , , .

if (ModelState.IsValid)
{
    var member = db.Members.Find(vm.m_id);
    member.title_id = vm.title_id;
    ViewBag.Titles = new SelectList(db.Titles.ToList(), "title_id", "Titles", vm.title_id);   
    db.SaveChanges();
    return RedirectToAction("Index");
}
  • db.Entry(member).State = EntityState.Modified;, db.SaveChanges();

  • member . db.Members.Attach(member);

@Html.DropDownListFor(m => m.title_id, ViewBag.Titles)


@Html.DropDownListFor(m => m.title_id, (SelectList) ViewBag.Titles)

ViewBag

+3

. :

@Html.DropDownListFor(m => m.title_id, ViewBag.Titles)

, - , URL- ...?Titles=1, .

+1

All Articles