web-dev-qa-db-fra.com

Objectif de l'option EF 6.x DbContext Generator lors de l'ajout d'un nouvel élément de données dans Visual Studio

J'ai créé une application Web à l'aide de LINQ to SQL et je souhaite la mettre à niveau vers LINQ vers Entity Framework. J'ai consulté des tutoriels et ce que j'ai appris, c'est que dans le scénario de la première base de données, vous créez un modèle de données d'entité ADO.NET. Et à partir de là, vous sélectionnez les tables à inclure dans le modèle (très similaires à LINQ to SQL).

Dans la boîte de dialogue Ajouter un nouvel élément, je vois qu’une autre option permet de créer un EF 6.x DbContext Generator:

Visual Studio Add New Item dialog

Quel est le but de EF 6.x DbContext Generator par rapport à modèle de données d'entité ADO.NET (première option de la boîte de dialogue)? Et à quoi sert EF 6.x DbContext Generator? Il semble créer un fichier texte. Que devrais-je en faire?

59
frenchie

Si vous avez déjà une base de données, la première option est préférable, étant donné que l'approche est très similaire à celle que vous utilisez déjà dans LinqToSQL. Le fichier .EDMX peut également vous fournir une visualisation graphique de votre base de données, sans que vous ayez à vous soucier de quoi que ce soit.

12
brduca

DbContext Generator remplace ObjectContext par un code beaucoup plus simple et plus court pour connecter des objets Entity à des objets de base de données. Une table de base de données unique avec 30 champs est représentée par environ 800 lignes de code sous la forme d'un ObjectContext, mais environ 40 lignes de code facile à comprendre sous la forme d'un DbContext et d'une classe générée par DbContextGenerator.

DbContext Generator crée deux fichiers -

  1. créer le DbContext avec les détails de la chaîne de connexion et un DbSet pour chaque table.

  2. créer la classe représentant chaque table. Si vous ouvrez ces dossiers .tt, vous verrez le DbContext et les classes générés. Vous n'avez rien besoin de faire avec ces classes - vous y faites référence dans les actions du contrôleur.

Une procédure pas à pas est disponible à l’adresse http://msdn.Microsoft.com/en-US/data/jj206878

16
William Smith

Je pense que c'est l'article essentiel sur EntityFramework et les générateurs:

article MSDN

Voici l'introduction de l'article:

Lorsque vous créez un modèle à l'aide du concepteur Entity Framework, vos classes et le contexte dérivé sont automatiquement générés. En plus de la génération de code par défaut, nous fournissons également un certain nombre de modèles pouvant être utilisés pour personnaliser le code généré. Ces modèles sont fournis en tant que modèles de texte T4, vous permettant de personnaliser les modèles si nécessaire.

Généralement , ces générateurs ne convertissent pas votre module de base de données de LinqToSQL en EntityFramework.
Si vous avez une base de données complète (supposez que vous l’ayez en tant que module basé sur Linq2SQL), je vous recommanderais d’utiliser le modèle de données d’entité ADO.NET (en ajoutant un nouvel élément: EDMX) et de choisir "Générer à partir de la base de données" ( VS Wizard après l'ajout).

12
Bronek

Il y a deux façons de faire une base de données. Premièrement, l'une implique un fichier EDMX, l'autre le reverse engineering pour coder les premiers POCO.

Lorsque vous avez un fichier EDMX, vous installez des générateurs utilisés pour générer vos entités, et plusieurs options sont disponibles. L'un est DbContext, l'autre le générateur EntityObject, qui génère des objets basés sur ObjectContext.

6
Erik Funkenbusch

La première option crée un fichier modèle-premier à utiliser avec EF (toutes les versions). Si vous choisissez de mettre à jour (ou de construire) votre modèle EF à partir d'une base de données existante, si vous choisissez la deuxième option, vous aurez la possibilité de générer fichiers correspondants pour construire une solution permettant de travailler avec Code-First EF.

D'après mes expériences, le second choix n'est pas une option valable et si vous décidez de travailler avec Code-First EF, il est fortement recommandé d'ouvrir un fichier vierge et d'écrire vos codes librement et de profiter de la flexibilité maximale offerte par Code-First. et leurs conventions.

3
Ali Dehghan