2012-10-14 22 views
0

我正在更新表中的數據,然後更新其他歷史表中的插入日期,其中第一個表具有相同的字段。如何從objectdateContext.SaveChanges()方法獲取更新的實體

我的代碼是:

public void SaveChanges() 
    { 
     objectdateContext.SaveChanges(); 

     saveInHistoryTable(); // here how i can pass the current entity. 
    } 

public void saveInHistoryTable(FirstTable f) 
{ 
    SecondTable s = new SecondTable(); 
    s.id = f.id; 
    s.Name = f.Name; 
    objectdateContext.Insert(s); 
} 

請指引我感謝。

回答

0

saveInHistoryTable(); // here how i can pass the current entity.

的實體長,這一點了。你應該調用這個方法,並且在發生的任何方法發生變化之後傳入實體。

你應該將這些問題分解成不同的方法。老實說,SaveChanges()不應該包括做一個「當前實體」的備份。此外,你怎麼知道只有一個實體發生了變化?如果它是一個被改變的對象圖,那麼不可能只傳入一個對象並且已經備份了整個圖。

0

您可以重載上下文中的SaveChanges(),然後爲ChangeTracker中的每個對象執行保存操作。

這裏是我以前用過的一個例子(這是一個的DbContext,如果你有一個對象上下文會略有不同):

public override int SaveChanges() 
    { 
    if(ChangeTracker.Entries().Any(e => e.State != EntityState.Unchanged)) 
    { 
     //insert the entry into the History table 
    } 

    return base.SaveChanges(); 
    } 
+0

該解決方案似乎有趣,我,想着如何與工作原理一個對象圖,在下面的響應中@Travis J的相同問題,但ChangeTracker.Entries()可以解決這個問題。將測試它。 – Ewerton

相關問題