2010-08-12 20 views
56

Estoy siguiendo un tutorial por Scott Gu que se refiere a una clase llamada DbContext. No puedo encontrarlo en ningún espacio de nombres en el marco 4 y me parece que se renombró de CT4 DbContext a .net4 System.Data.Linq.DataContext. ¿Mi suposición es correcta?¿DbContext es lo mismo que DataContext?

+0

¿descargó el CTP? Creo que usa un espacio de nombres como System.Data.Entities.CTP o somesuch ... – AllenG

+0

No lo he hecho. Pero descubrí sobre ObjectContext. Como esto es para un sistema de producción, no puedo usar CTP. –

+5

NB Sé que es obvio pero 'System.Data.Linq.DataContext' es de LINQ To Sql y' DbContext' es de Entity Framework –

Respuesta

86

DbContext es una nueva clase que se agregó en la descarga separada reciente por el equipo de EF. Actualmente no forma parte del núcleo EF 4.0. Sin embargo, DbContext avanzar sería la forma preferida de interactuar con EF.

Entonces, ¿cómo es diferente de ObjectContext? Bueno, semánticamente son exactamente lo mismo pero redujeron mucho ruido adicional que tenía ObjectContext. Al igual que la exposición de un conjunto necesario más trabajo, por ejemplo:

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

Con DbContext que puede hacer:

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

Básicamente en la ObjectContext, cuando haces punto (.), todo lo que es justo allí, lo cual hace la lista bastante grande. Lo que el equipo de EF realmente quería exponer en DbContext son entidades que son solo específicas de su dominio y el resto de la capacidad del marco se encuentra bajo diferentes propiedades. Simplemente hace que la experiencia de programación sea más fácil.

Esto significa que si está utilizando ObjectContext en este momento, con un poco de código, puede pasar fácilmente a DbContext.

+1

¿Alguna idea de cuándo se fusionará con la rama principal del framework? –

+6

EF 4.1 se ha lanzado a partir del 11 de abril de 2011. Consulte http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx para obtener más información. – villecoder

+1

¿Esto no te une a EF para todo el proyecto, digamos que tienes una capa empresarial? – Coops

6

Es un poco tarde, pero para los googlers. DbContext se utiliza para EF (ADO.NET Entity Framework) y DataContext se utiliza para L2S (LINQ a SQL).

Cuestiones relacionadas