2010-08-12 3 views
56

Je suis un tutoriel par Scott Gu qui fait référence à une classe nommée DbContext. Je ne peux pas le trouver sur un espace de noms sur le framework 4 et il me semble qu'il a été renommé de CT4 DbContext en .net4 System.Data.Linq.DataContext. Est-ce que mon hypothèse est correcte?Est-ce que DbContext est identique à DataContext?

+0

avez-vous téléchargé le CTP? Je crois qu'il utilise un espace de noms comme System.Data.Entities.CTP ou somesuch ... – AllenG

+0

Je n'ai pas. Mais j'ai découvert ObjectContext. Comme c'est pour un système de production, je ne peux pas utiliser CTP. –

+5

NB Je sais son évidente mais 'System.Data.Linq.DataContext' est de LINQ sql et' DbContext' est de Entity Framework –

Répondre

86

DbContext est une nouvelle classe qui a été ajoutée dans le téléchargement séparé récemment par l'équipe EF. Il ne fait actuellement pas partie du noyau EF 4.0. Cependant DbContext aller de l'avant serait la façon préférée d'interagir avec EF.

Alors, comment est-il différent de ObjectContext? Bien sémantiquement, ils sont exactement les mêmes mais ils ont réduit beaucoup de bruit supplémentaire que ObjectContext avait. Comme l'exposition d'un ensemble requis plus de travail, par exemple:

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

Avec DbContext vous pouvez faire:

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

En gros sur le ObjectContext, quand vous faites point (.), tout est là qui rend la liste assez énorme. Qu'est-ce que l'équipe EF voulait réellement exposer sur DbContext sont des entités qui ne sont spécifiques à votre domaine et reste de la capacité de l'infrastructure est caché sous différentes propriétés. Cela facilite simplement l'expérience de programmation.

Cela signifie que si vous utilisez ObjectContext dès maintenant, avec un peu de code, vous pouvez facilement passer à DbContext.

+1

Toute idée quand il sera fusionné dans la branche principale du cadre? –

+6

EF 4.1 a été publié en date du 11 avril 2011. Pour plus de détails, voir http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx. – villecoder

+1

Cela ne vous lie-t-il pas à EF pour l'ensemble de votre projet, disons que vous aviez un Business Layer? – Coops

6

Il est un peu trop tard, mais pour les Googlers. DbContext est utilisé pour EF (EntityFramework) et DataContext est utilisé pour L2S (LINQ to SQL).

Questions connexes