朋友。 我真的需要你的幫助。我會很感激。錯誤「一個實體對象不能被多個IEntityChangeTracker實例引用」
所以我在MS SQL Server中有實體「模型」c字段「ID_model」和「名稱」。 我想要在Form1上單擊「編輯」後,還有另一種形式(FormModel),您可以在其中更改數據並將更改寫入數據庫。
問題是,按下「編輯」後有一個關於「其他信息:一個實體對象不能被多個IEntityChangeTracker實例引用」的錯誤,我不知道如何解決它。從Form1中
代碼:
從FormModelpublic partial class Form1 : Form
{
MyDBEntities db2;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
db2 = new MyDBEntities();
modelBindingSource.DataSource = db2.Models.ToList();
dataGridView.Columns.RemoveAt(2);
}
private void btnEdit_Click(object sender, EventArgs e)
{
if (modelBindingSource.Current == null)
return;
using (FormModel frm = new FormModel(modelBindingSource.Current as Model))
{
if (frm.ShowDialog() == DialogResult.OK)
{
modelBindingSource.DataSource = db2.Models.ToList();
}
}
}
}
代碼:
public partial class FormModel : Form
{
MyDBEntities db2;
public FormModel(Model obj)
{
InitializeComponent();
db2 = new MyDBEntities();
if (obj == null)
{
modelBindingSource.DataSource = new Model();
db2.Models.Add(modelBindingSource.Current as Model);
}
else
{
modelBindingSource.DataSource = obj;
db2.Models.Attach(modelBindingSource.Current as Model);
}
}
private void FormModel_FormClosing(object sender, FormClosingEventArgs e)
{
if (DialogResult == DialogResult.OK)
{
if (string.IsNullOrEmpty(txtModelName.Text))
{
MessageBox.Show("There are empty fields", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information);
txtModelName.Focus();
e.Cancel = true;
return;
}
db2.SaveChanges();
e.Cancel = false;
}
e.Cancel = false;
}
}
我真的希望幫助。祝一切順利。請原諒我的英語。
您正在將相同的項目附加到多於1個上下文,這是不允許的。這是你如何得到錯誤。請參閱[this](http://stackoverflow.com/questions/10191734/entity-object-cannot-be-referenced-by-multiple-instances-of-ientitychangetracker)以獲取更多信息。 – CodingYoshi
感謝您的回覆。但我不知道如何解決這個問題。我看了你的鏈接,但它沒有幫助我。 –