PDA

View Full Version : سوال: علت خطای ForeignKeyReferenceAlreadyHasValueException



omid78
چهارشنبه 15 شهریور 1396, 17:09 عصر
دوستان علت ارور System.Data.Linq.ForeignKeyReferenceAlreadyHasValu eException: 'Operation is not valid due to the current state of the object.' چیست ؟

fortex
چهارشنبه 15 شهریور 1396, 17:54 عصر
دوست عزیز لطفا کدنویسیت رو قرار بده.

omid78
چهارشنبه 15 شهریور 1396, 18:02 عصر
var query2 = (from u in connect.tblClasses where u.ClassID == Convert.ToInt32(radMultiColumnComboBox1.SelectedVa lue) select u).Single();


var query = (from u in connect.tblStudentBasics where u.StudentID == Convert.ToInt32(dataGridView1[0, dataGridView1.CurrentRow.Index].Value) select u).Single();
query.StudentName = txtName.Text;
query.StudentFatherName = txtFather.Text;
query.StudentFamilyName = txtFamilyName.Text;
query.StudentFullName = lblFullName.Text;
query.StudentPhoneNumber = txtPhone.Text;
query.ClassID = Convert.ToInt32(query2.ClassID);

ژیار رحیمی
چهارشنبه 15 شهریور 1396, 21:06 عصر
مشکل در مقدار دهی مستقیم کلید خارجی ClassID هست.

var query2= connect.tblClasses.Find( Convert.ToInt32(radMultiColumnComboBox1.SelectedVa lue));
var query= connect.tblStudentBasics.Find(Convert.ToInt32(data GridView1[0, dataGridView1.CurrentRow.Index].Value));
query.StudentName = txtName.Text;
query.StudentFatherName = txtFather.Text;
query.StudentFamilyName = txtFamilyName.Text;
query.StudentFullName = lblFullName.Text;
query.StudentPhoneNumber = txtPhone.Text;
query.tblClass = query2;

omid78
پنج شنبه 16 شهریور 1396, 00:16 صبح
146271
این مشکل رو با متد Find داره

ژیار رحیمی
پنج شنبه 16 شهریور 1396, 00:29 صبح
using System.Linq;

اگر باز خطا داد بجای متد Find از متد FirstOrDefault بزار

omid78
پنج شنبه 16 شهریور 1396, 00:35 صبح
از
using System.Linq
استفاده میکنم ولی نه متد Find جواب میده و نه متد FirstOrDefault

ژیار رحیمی
پنج شنبه 16 شهریور 1396, 13:31 عصر
ClassId پرایمری کی جدول tblClass و StudentId پرایمری کی جدول StudentBasic هست .

var id=Convert.ToInt32(radMultiColumnComboBox1.Selecte dValue);
var query2= connect.tblClasses.FirstOrDefault(c=>c.ClassId==id);
id=Convert.ToInt32(data GridView1[0, dataGridView1.CurrentRow.Index].Value);
var query= connect.tblStudentBasics.FirstOrDefault(c=>c.StudentId==id);