2010-08-12 12 views
56

Ich folge einem Tutorial von Scott Gu, die auf eine Klasse namens DbContext verweist. Ich kann es auf keinem Namespace auf Framework 4 finden und es scheint mir, dass es von CT4 DbContext in .net4 System.Data.Linq.DataContext umbenannt wurde. Ist meine Annahme richtig?Ist DbContext dasselbe wie DataContext?

+0

haben Sie das CTP heruntergeladen? Ich glaube, es verwendet einen Namensraum wie System.Data.Entities.CTP oder so ... – AllenG

+0

Ich habe nicht. Aber ich habe über ObjectContext erfahren. Da dies für ein Produktionssystem ist, kann ich CTP nicht verwenden. –

+5

NB Ich weiß es offensichtlich, aber 'System.Data.Linq.DataContext' stammt von LINQ To Sql und' DbContext' ist von Entity Framework –

Antwort

86

DbContext ist eine neue Klasse, die in den letzten separaten Download von EF-Team hinzugefügt wurde. Es ist derzeit nicht Teil des Kerns EF 4.0. DbContext vorwärts zu bewegen wäre jedoch der bevorzugte Weg, um mit EF zu interagieren.

Also wie unterscheidet es sich von ObjectContext? Nun semantisch sind sie genau das gleiche, aber sie haben viel zusätzliches Rauschen reduziert, das ObjectContext hatte. Wie eine Menge auszusetzen mehr Arbeit erforderlich, zum Beispiel:

public ObjectSet<Customer> Customers 
{ 
    get { return db.CreateObjectSet<Customer>(); } 
} 

Mit DbContext können Sie tun:

public DbSet<Customer> Customers { get; set; } 

Grundsätzlich auf den ObjectContext, wenn Sie das tun Punkt (.), alles ist genau das Richtige dort die macht die Liste ziemlich groß. Was das EF-Team eigentlich auf DbContext aussetzen wollte, sind Entitäten, die nur für Ihre Domain spezifisch sind und die Restfähigkeit des Frameworks unter verschiedenen Eigenschaften versteckt. Es erleichtert nur die Programmiererfahrung.

Dies bedeutet, wenn Sie gerade ObjectContext verwenden, mit ein wenig Code, können Sie leicht zu DbContext verschieben.

+1

Irgendwelche Idee, wenn es in den Haupt-Framework-Zweig zusammengeführt wird? –

+6

EF 4.1 wurde am 11. April 2011 veröffentlicht. Weitere Informationen finden Sie unter http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx. – villecoder

+1

Verbindet Sie das nicht mit EF für Ihr gesamtes Projekt, sagen Sie, Sie hätten eine Business-Schicht? – Coops

6

Es ist ein bisschen zu spät, aber für die Googler. DbContext für EF verwendet wird (EntityFramework) und DataContext für L2S verwendet (LINQ to SQL).

Verwandte Themen