2012-04-24 18 views
1

在我的數據庫中,我有兩個表Employee和Address。在表單中,單個選項卡表示兩個表的字段。在確定按鈕的點擊事件下,我試圖插入數據,但發生異常。我可以一次插入一個表的數據,但不能同時插入兩個表。在單個按鈕中使用實體框架在兩個不同表格中插入數據點擊c#

我有例外:

「具有相同的鍵已經存在於ObjectStateManager現有對象處於修改狀態 一個對象只能被添加到ObjectStateManager如果是在增加了一個對象。州。」

我的代碼是:

 try 
     { 

      using (TransactionScope ts = new TransactionScope()) 
      { 
       db.Connection.Open(); 

       string empid = txtEmpId.Text.ToString(); 

       Employee emp = db.Employees.Single(a => a.Emp_ID == empid); 

       emp.Full_Name = txtFullName.Text; 

       db.AddToEmployees(emp); 

       db.SaveChanges(); 

       Address address = db.Addresses.Single(b => b.Emp_Id == empid); 

       address.House_No = txtHouseNo.Text.ToString(); 

       db.AddToAddresses(address); 

       db.SaveChanges(); 


       ts.Complete(); 

       MessageBox.Show("completed successfully"); 
      } 
     } 

     catch (Exception e1) 
     { 
      MessageBox.Show(e1.Message); 
     } 

     finally 
     { 
      if (db.Connection.State == ConnectionState.Open) 
      { 
       db.Connection.Close(); 
      } 
     } 

PLž幫助我!

+1

你應該張貼一些代碼,是有關你正在嘗試做 – musefan 2012-04-24 11:20:18

+0

至於現在,我添加的代碼,所以我期待您的回覆 – 2012-04-24 18:41:25

回答

1

通過您的發佈代碼的外觀,您從數據庫中檢索地址,進行更新,然後嘗試將其添加回數據庫中?

由於記錄不能插入兩次,這會導致主鍵衝突。

刪除將地址添加到數據庫的行,因爲它已經在那裏。

+0

這些表具有主/外鍵關係。 – 2012-04-24 18:36:39

+0

我有個例外: 「ObjectStateManager中已存在具有相同鍵的對象,現有對象處於修改狀態 對象只能添加到ObjectStateManager中,如果它處於已添加狀態。 現在我粘貼我的代碼,所以幫我解決這個問題 – 2012-04-24 18:37:48

+0

@ZeeshanAjmal請看我編輯的答案。 – KingCronus 2012-04-25 08:32:49

0

您可以使用事務插入到兩個表爲一個SQL語句

Transaction Example

+0

我正在以上述方式使用該事務。你能告訴我我犯了什麼錯誤嗎? – 2012-04-24 18:42:24

相關問題