c# - I am using linq statement to update data in database -


i using linq statement update data in database. first user search name , details displayed in gridview , user select 1 employee , data displayed in relative textbox , dropdownlist.

when select data in both dropdown works fine , database gets updated , if select 1 dropdown shows error

"the update statement conflicted foreign key constraint "fk_emp_location". conflict occurred in database "empdept", table "dbo.location", column 'locationid'."

//update button

using (dataclassesdatacontext dc = new dataclassesdatacontext()) {     emp employee = dc.emps.single(emp => emp.empid == id);     employee.empfirstname = txtfirstname.text;     employee.emplastname = txtlastname.text;     employee.mgrid = int.parse(txtmgrid.text);     employee.birthdate = convert.todatetime(txtdob.text);     employee.email = txtemail.text;     employee.mobile = txtmobile.text;     employee.locationid = ddllocation.selectedindex;     employee.salary = int.parse(txtsalary.text);     employee.deptid = ddldepartment.selectedindex;     //dc.emps.insertonsubmit(employee);     dc.submitchanges();      scriptmanager.registerclientscriptblock(this, gettype(), "alertmessage", "alert('record updated successfully!!!')", true);     clearfields(); } 

//grid view

    protected void gvsearch_selectedindexchanged(object sender, eventargs e)     {         try         {             ddldepartment.items.removeat(0);             ddllocation.items.removeat(0);              string ddldept = gvsearch.selectedrow.cells[9].text;             string ddlloc = gvsearch.selectedrow.cells[10].text;              listitem deptremove = ddldepartment.items.findbytext(ddldept);             ddldepartment.items.remove(deptremove);             listitem locremove = ddllocation.items.findbytext(ddlloc);             ddllocation.items.remove(locremove);              txtempid.text = gvsearch.selectedrow.cells[1].text;             txtfirstname.text = gvsearch.selectedrow.cells[2].text;             txtlastname.text = gvsearch.selectedrow.cells[3].text;             txtmgrid.text = gvsearch.selectedrow.cells[4].text;             txtdob.text = gvsearch.selectedrow.cells[5].text;             txtemail.text = gvsearch.selectedrow.cells[6].text;             txtmobile.text = gvsearch.selectedrow.cells[7].text;             txtsalary.text = gvsearch.selectedrow.cells[8].text;             ddldepartment.items.insert(0, new listitem(ddldept));             ddllocation.items.insert(0, new listitem(ddlloc));          }         catch         {           }     } 

//dropdownlist

 private void bindddl()     {         try         {             using (dataclassesdatacontext dc = new dataclassesdatacontext())             {                 var location = l in dc.locations                           select l;                 ddllocation.datasource = location;                 ddllocation.datavaluefield = "locationid";                 ddllocation.datatextfield = "locationname";                 ddllocation.databind();                 ddllocation.items.insert(0, new listitem("--select location--"));                  var department = d in dc.depts                           select d;                 ddldepartment.datasource = department;                 ddldepartment.datavaluefield = "deptid";                 ddldepartment.datatextfield = "deptname";                 ddldepartment.databind();                 ddldepartment.items.insert(0, new listitem("--select department--"));             }         } 

database error after changing selectedindex selectedvalue

you have used selectedindex, instead use selectedvalue:

employee.locationid = int.parse(ddllocation.selectedvalue); 

same applies department:

employee.deptid = int.parse(ddldepartment.selectedvalue); 

you're lucky there no id matching selected-index, error instead of inconsistencies. reason why foreign-key constraints useful.


Comments