2016-04-22 34 views
0

使用VS2010 SP1 MVC4和EF6。我有這個非常通用的代碼。它意味着抓住DateCreated和DateModified屬性並在每次保存時填充它們。EF ChangeTracker.Entries()。無法識別的地方

foreach (var history in this.ChangeTracker.Entries() 
    .Where(e => e.Entity is IModificationHistory && (e.State == EntityState.Added || 
     e.State == EntityState.Modified)) 
    .Select(e => e.Entity as IModificationHistory)) 
{ 
    history.DateModified = DateTime.Now; 
    if (history.DateCreated == DateTime.MinValue) 
    { 
     history.DateCreated = DateTime.Now; 
    } 
} 
int result = base.SaveChanges(); 

我在.Where得到一個錯誤。當我在Entries()後面輸入.時,intellisense不會給出Where的選項,只有5個標準GetType等。如果我刪除where子句,則.Select顯示錯誤。

代碼有什麼問題?

+3

你得到的錯誤是什麼?你是否錯過了'使用System.Linq'指令? –

+1

是的,這是使用。請注意,您應該使用'this.ChangeTracker.Entries ()'。 –

回答

1

是對的 - 我沒有使用聲明。非常尷尬。謝謝。

+0

碰到同樣的問題。完美的捕捉@威爾雷。必須知道新的東西,VS智能不適用於擴展方法。感謝Gert Arnold建議替代方法從ChangeTracker中取出IModificationHistory對象,而不使用.Where() – user2243747