c# - Cannot add an entity with a key that is already in use update operation -


i creating small application in have used linq sql perform operation database.

now here giving small part of database structure please take look.

enter image description here

so update language detail getting object of login using datacontext this.

xvdatacontext context = new xvdatacontext ();  var myquery = objlogin in context.gettable<login>() objlogin.emp_id == nempid select objlogin; 

in nempid have value.

so not creating problem in fact getting required record db , storing in objuser object using following code.

login objuser = myquery.first<login>(); 

now update languagedetail executing following code throws exception when execute submitchanges line.

enter image description here

here code executing update.

languagedetail obj = new languagedetail(); foreach (string slanguages in textboxlanguagesknown.text.split('\n')) {        obj.emp_id = objuser.emp_id;        obj.language = slanguages.trim(); } objuser.languagedetails[0] = obj;  context.submitchanges(); 

i read following links.

cannot add entity key in use

linq sql exception attach(): cannot add entity key alredy in use

cannot add entity key in use (linq)

by reading above links found doing mistake in id fields still unable resolve.

please tell me clear understanding of raising issue , how can resolve this.

edit:

i want update languagedetail table.

when try add new object using following code still throws exception.

objuser.languagedetail.add(obj); 

you might want add / remove languages specific user using following code.

var languages = textboxlanguagesknown.text.split('\n');  // removes deleted languages (first find language details missing ui). var deletedlanguages = objuser.languagedetails.where(ld => !languages     .any(l => ld.language == l.trim())).toarray(); foreach(var deletedlanguage in deletedlanguages) {     objuser.languagedetails.remove(deletedlanguage);     context.languagedetails.deleteonsubmit(deletedlanguage); }  // adds new languages (then adds new language details not found in database). var newlanguages = languages.where(l => !objuser.languagedetails     .any(ld => ld.language == l.trim())).toarray(); foreach (string newlanguage in newlanguages) {     var languagedetail = new languagedetail     {         emp_id = objuser.emp_id,         language = newlanguage.trim()     };     objuser.languagedetails.add(languagedetail); }  context.submitchanges(); 

Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -