2014-02-20 2 views
11

Ich muss eine gesamte Tabelle mit Entity Framework 4.0 in den Speicher laden. Ich habe die letzten 2 Stunden damit verbracht, über die AsNoTracking() Methode zu lesen, die den Trick machen sollte, aber ich kann nicht herausfinden, warum die Methode auf meinem dataContext nicht verfügbar ist. Basierend auf allem, was ich gelesen habe, sollte ich nur einen Verweis auf System.Data.Entity benötigen. Dann sollte ich die Methode AsNoTracking() beim Laden meiner Objekte verwenden können. Fehle ich hier etwas Einfaches? Ist diese Methode in EF 4.0 nicht verfügbar? Nichtsdestotrotz ist unten eine der Abfragen von meinem Code.AsNoTracking() -Methode fehlt aus Kontext in Entity Framework

// Working Query 
var items = dbContext.Items.ToList() 

// Does NOT Work (Compiler does not recognize AsNoTrackingMethod()) 
var items = dbContext.Items.AsNoTracking().ToList() 
+0

System.Data.Entity verwiesen wird, und ich bin mit Entity Framework 4.0. Die Dokumentation, die ich gefunden habe, ist nicht klar, welche Version damit begann, diese Methode zu unterstützen, vielleicht ist es ein Versions-Problem. – Grasshopper

Antwort

6

AsNoTracking() ist eine Erweiterung Methode, die in Entity Framework 4.1 (als Fähigkeit, nicht zwischengespeicherten Ergebnisse zurück) hinzugefügt. Deshalb haben Sie es in Entity Framework 4.0 nicht. Ich empfehle Ihnen, die Version von Entity Framework zu aktualisieren, wenn es möglich ist (BTW aktuelle Version ist 6.0).

+1

Gemäß [Verwendung von DbContext in EF 4.1 Part 11] (http://blogs.msdn.com/b/adonet/archive/2011/02/05/using-dbcontext-in-efe-feature-ctp5-part-11 -load-and-asnotracking.aspx), 'AsNoTracking()' ist in EF 4.1 verfügbar. Das ist immer noch neuer als 4.0, also ist es vielleicht nicht für das OP verfügbar, aber es scheint nicht in EF5 hinzugefügt zu werden. – hvd

+0

@hvd seltsam, MSDN haben nur EF Version Dokumentation für diese Methode. –

+0

Danke Sergey. Ich werde sehen, ob wir aktualisieren können. Und ich werde deine Antwort annehmen, sobald SO es mir erlaubt. – Grasshopper

9

AsNoTracking() ist eine Erweiterungsmethode in der Klasse DbExtensions (EF5)/QueryableExtensions (EF6), die Teil des Namespaces System.Data.Entity ist. Es fehlt nicht im Entity Framework 4.1+. Sie müssen lediglich daran denken, eine using-Direktive für diesen Namespace hinzuzufügen.

using System.Data.Entity; 
+0

Danke! Das hat geholfen. –

+0

vielen Dank:) – smoothumut

0

Wenn EF von .NET Core-using-Direktive verwenden:

using Microsoft.EntityFrameworkCore; 
Verwandte Themen