2013-04-21 69 views
0

我已閱讀了有關此問題的許多主題,但我仍無法理解爲什麼會出現此錯誤。
拋出在標題中提到的錯誤:db.megrendelesek.Add(form.uj);一個實體對象不能被IEntityChangeTracker的多個實例引用。這是什麼意思?

private void button1_Click(object sender, EventArgs e) 
{ 
    foreach (Account item in db.accountok) 
    { 
     if (item.Username == textBox1.Text && item.Password == textBox2.Text) 
     { 
      MegrendelesForm form = new MegrendelesForm(item as Account); 

      if (form.ShowDialog() == DialogResult.OK) 
      { 
       db.megrendelesek.Add(form.uj); 

       db.SaveChanges(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("Bad user or pw"); 
     } 
    } 
} 

public partial class MegrendelesForm : Form 
{ 
    RaktarDB db = new RaktarDB(); 
    public Megrendeles uj { get; set; } 
    public Account belepett = new Account(); 

    public MegrendelesForm(Account item) 
    { 
     InitializeComponent(); 
     belepett = item; 

     var aruk = (from aru in db.aruk 
       select aru).ToList<Aru>(); 
     listBox1.DataSource = aruk; 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     List<Aru> aruk = new List<Aru>(); 
     foreach (Aru item in listBox2.Items) 
     { 
      aruk.Add(item); 
     } 

     uj = new Megrendeles {account=belepett,aruk=aruk }; 
    } 
    public class Megrendeles 
    { 
     public int ID { get; set; } 
     public virtual Account account { get; set; } 
     public virtual List<Aru> aruk { get; set; } 
    } 
} 

回答

0

這個錯誤通常來自維護兩個環境,並試圖從一個附加實體到另一個環境。

在你上面的例子中,我無法真正說明這是爲什麼,但我想form.uj是從任何數據庫的另一個實例填充。

它通常是明智的與所有的UI元素共享一個上下文,這可能會解決您的問題。

+0

是的,基本上我想創建一個訂購程序。 MegrendelesForm的button1_Click事件給出了一個Megrendeles(翻譯成英語:order)對象,其中包含orderers帳戶ID,以及訂購產品列表,以及我想要更改爲數據庫的主表單。帳戶和產品在數據庫中都有自己的表。但我真的很陌生,所以我只想分享一個上下文來問你是什麼意思?我怎樣才能做到這一點? – fzl 2013-04-21 09:02:54

相關問題