2009-09-21 65 views
0

我試圖使用LinqToSQL執行一個直接更新,並且無法讓它工作。LinqToSql更新切換父母時的問題

這是數據模型:有一個 timesheet_entry客戶。一個客戶有很多 timesheet_entries。這是一個簡單的外鍵關係。

如果我正在編輯現有的timesheet_entry,如果我更改了customer_id,則會發生異常。

這是我對代碼的嘗試。有人能幫助我嗎?

 internal void CommitChangesToEntry(Timesheet_Entry entry) 
     { 

      Timesheet_Entry latest = (from e 
             in m_dataContext.Timesheet_Entries 
             where e.Timesheet_Entry_ID == entry.Timesheet_Entry_ID 
             select e).First(); 


      latest.Entry_Start_DateTime = entry.Entry_Start_DateTime; 
      latest.Entry_End_DateTime = entry.Entry_End_DateTime; 
      latest.Task_Description = entry.Task_Description; 

      // Comment out this line of code and it 
      // doesn't throw an exception 
      latest.Customer_ID = entry.Customer_ID; 

      m_dataContext.SubmitChanges(); // This throws a NotSupportedException 

     } 

的錯誤是:「嘗試已經取得了附加或添加,是不是新這是不支持的實體,或許已經從另一個DataContext的加載。」。

+0

你對很多SubmitChanges使用DataContext嗎? – 2009-09-21 10:48:01

回答

0

你有沒有理由不使用Attach方法?像下面這樣:

m_dataContext.Timesheet_Entries.Attach(entry); 
m_dataContext.SubmitChanges();