web-dev-qa-db-fra.com

Entity Framework - Génération de classes

J'ai une base de données existante. J'espérais qu'il y avait un moyen de générer des fichiers de classe à partir de cette base de données. Cependant, il semble que je vois beaucoup de choses générer la base de données à partir des fichiers de classe.

Existe-t-il un moyen de générer des fichiers de classe à partir d'une base de données existante à l'aide d'Entity Framework? Si c'est le cas, comment? Est-ce que quelqu'un peut m'indiquer un tutoriel?

60

1) Vous devez d’abord générer le modèle EDMX à l’aide de votre base de données. Pour ce faire, vous devez ajouter un nouvel élément à votre projet:

  • Sélectionnez ADO.NET Entity Data Model dans la liste des modèles. 
  • Sur la page Choisir le contenu du modèle, sélectionnez l'option Générer à partir de la base de données, puis cliquez sur Suivant. 
  • Choisissez votre base de données. 
  • Dans la page Choisir vos objets de base de données, vérifiez les tables. Choisissez Vues ou Procédures stockées si vous en avez besoin. 

Alors maintenant, vous avez le fichier Model1.edmx dans votre projet.

2) Pour générer des classes à l'aide de votre modèle:

  • Ouvrez votre concepteur de modèle EDMX.
  • Sur l'aire de conception Cliquez avec le bouton droit de la souris -> Ajouter un élément de génération de code… 
  • Sélectionnez les modèles en ligne.
  • Sélectionnez EF 4.x DbContext Generator for C#.
  • Cliquez sur "Ajouter".

Notez que deux éléments sont ajoutés à votre projet: 

  • Model1.tt (Ce modèle génère des classes POCO très simples pour chaque entité de votre modèle) 
  • Model1.Context.tt (Ce modèle génère un DbContext dérivé à utiliser pour interroger et conserver des données)

3) Exemple de lecture/écriture de données:

 var dbContext = new YourModelClass(); //class derived from DbContext
 var contacts = from c in dbContext.Contacts select c; //read data
 contacts.FirstOrDefault().FirstName = "Alex"; //edit data
 dbContext.SaveChanges(); //save data to DB

N'oubliez pas que vous avez besoin de la version 4.x d'EntityFramework. Vous pouvez télécharger EF 4.1 ici: Entity Framework 4.1 .

116
algreat

J'ai trouvé une très bonne solution. Microsoft a publié une version bêta d'Entity Framework Power Tools: Bêta 2 d'Entity Framework Power Tools

Vous pouvez y générer des classes POCO, le mappage dérivé de DbContext et Code First pour une base de données existante en quelques clics. C'est vraiment bien!

Après l’installation, certaines options du menu contextuel seront ajoutées à votre Visual Studio.

Cliquez avec le bouton droit sur un projet C #. Choisissez Entity Framework-> Code d'ingénierie inverse en premier (génère des classes POCO, le mappage dérivé de DbContext et Code First pour une base de données existante):

Visual Studio Context Menu

Ensuite, choisissez votre base de données et cliquez sur OK. C'est tout! C'est très facile.

16
algreat
  1. Ouvrez le modèle EDMX 
  2. Clic droit -> Mise à jour du modèle à partir du navigateur -> Procédure stockée -> Sélectionnez votre procédure stockée -> Terminer
  3. Voir le navigateur de modèle qui apparaît à côté de l'Explorateur de solutions.
  4. Allez dans Importations de fonctions -> Cliquez avec le bouton droit sur votre procédure stockée -> Ajouter une fonction d'importation
  5. Sélectionnez les entités sous Renvoyer une collection de -> Sélectionnez le nom de votre entité dans le menu déroulant.
  6. Construisez votre solution.
1
Shubh

Le modèle EDMX ne fonctionnera pas avec EF7, mais j'ai trouvé un produit Community/Professional qui semble très puissant: http://www.devart.com/entitydeveloper/editions.html

1