2012-07-17 51 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; 
} 

和它的作品