2012-07-17 75 views
0

我嘗試下面的代碼來更新一行,但它添加了一個新的,我找不到我的錯誤在哪裏。爲什麼ApplyChanges()添加新記錄?

這裏是我的代碼:

public int SaveTerm(Term term) 
{ 
    using (AshyanehDataContext dc = this.conn.GetContext()) 
    { 
     if (term.TermID > 0) 
     { 
      dc.Terms.Attach(dc.Terms.Single(t => t.TermID == term.TermID)); 
      dc.Terms.ApplyChanges(term); 

     } 
     else 
     { 
      term.AddedDate = FarsiLibrary.Utils.PersianDateConverter.ToPersianDate(DateTime.Now).ToString("D"); 
      dc.Terms.AddObject(term); 
     } 
     dc.SaveChanges(); 
    } 
    return term.TermID; 
} 
+0

您的代碼以某種方式與問題無關的標題。你在使用STE嗎? – 2012-07-17 19:45:35

+0

哪部分是不相關的?方法名稱? – 2012-07-17 19:50:53

+0

我認爲dc.Terms.ApplyChanges(term);應更新輸入參數(術語),但在此方法調用後,我有一個新的術語。 :( – 2012-07-17 19:52:27

回答

0

我改變這部分

if (term.TermID > 0) 
{ 
    dc.Terms.Attach(dc.Terms.Single(t => t.TermID == term.TermID)); 
    dc.Terms.ApplyChanges(term); 

} 

if (term.TermID > 0) 
{ 
    Term _term = dc.Terms.First(t => t.TermID == term.TermID); 
    _term.Terms = term.Terms; 
} 

和它的作品