2016-04-22 20 views
0

Verwenden von VS2010 SP1 MVC4 und EF6. Ich habe diesen hübschen generischen Code. Es ist beabsichtigt, die DateCreated- und DateModified-Eigenschaften zu erfassen und sie bei jedem Speichern zu füllen.EF ChangeTracker.Entries(). Wird nicht erkannt

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(); 

Ich erhalte einen Fehler auf dem .Where. Wenn ich eine . nach Entries() die Intellisense gibt keine Option für Where, nur die 5 Standard GetType, etc. Wenn ich die Where-Klausel entfernen, dann zeigt die .Select einen Fehler.

Was ist falsch an dem Code?

+3

Was ist der Fehler, den Sie bekommen? Vermissen Sie eine 'using System.Linq' Direktive? –

+1

Ja, es ist die Verwendung. Beachten Sie, dass Sie 'this.ChangeTracker.Entries ()' lieber verwenden sollten. –

Antwort

1

Will war richtig - ich hatte nicht die using-Anweisung. Sehr peinlich. Vielen Dank.

+0

Ran in die gleiche Ausgabe. Perfekter Fang @Will Ray. Neue Sache, VS-Intelligenz funktioniert nicht für Erweiterungsmethode. Danke Gert Arnold für das Vorschlagen einer alternativen Methode zum Abrufen von IModificationHistory-Objekten aus ChangeTracker ohne Verwendung von .Where() – user2243747