web-dev-qa-db-fra.com

Existe-t-il un générateur POCO de base de données Entity Framework 7?

J'ai joué avec Entity Framework 7 et ASP.NET 5 pour un nouveau projet sur lequel je travaille, mais j'ai rencontré un obstacle. L'équipe sur laquelle je travaille utilise une approche de développement DBA-first; c'est-à-dire que la base de données est conçue par DBA, puis les développeurs modifient le code pour compenser les changements de modèle.

En utilisant EF6, cela fonctionne bien, car nous pouvons simplement mettre à jour le code en utilisant la fonctionnalité "mise à jour" du concepteur EDMX. Un clic, nous obtenons les nouvelles classes, et nous avons terminé. Cependant, dans EF7, tout est différent. Il n'y a plus de concepteur, et nous sommes censés utiliser Code-First, qui, selon certains articles de blog publiés par l'équipe EF, devrait également prendre en charge la génération de code "Database-First".

Cependant, je ne parviens pas à comprendre comment le faire avec le Visual Studio 2015 CTP6 dans une application ASP.NET 5. Le support d'outillage est-il encore là, ou n'ai-je pas de chance? Et vient-il même du tout?

54
Ron Penton

Dans les derniers bits, il est possible d'utiliser les commandes Prompt et PowerShell de la commande dnx pour ce faire, oui

Scaffold-DbContext '<connectionString>' EntityFramework.MicrosoftSqlServer

ou

dnx ef dbcontext scaffold "<connectionString>"  EntityFramework.MicrosoftSqlServer

ou (depuis EF Core RC2)

dotnet ef dbcontext scaffold "<connectionString>"  Microsoft.EntityFrameworkCore.SqlServer

Vous devez installer le Microsoft.EntityFrameworkCore.Tools package pour que la commande fonctionne.

56
ErikEJ

Cela peut être fait en utilisant la console du gestionnaire de packages NuGet ou l'invite de commande. J'ai essayé avec l'invite de commande. Après avoir accédé au dossier du projet dans l'invite de commande, j'ai utilisé une commande similaire:

dnx ef dbcontext scaffold "Data Source=myServerName; Initial Catalog=myDatabaseName; Integrated Security=True" EntityFramework.SqlServer

J'ai eu des erreurs sur les paquets manquants:

EntityFramework.Commands

EntityFramework.SqlServer.Design

suivi de cette commande avant de continuer:

dnu restore

Le ou les packages réellement requis peuvent varier en fonction du ou des frameworks mentionnés dans votre fichier project.json .

Si vous ne parvenez pas à exécuter le dnx ou d'autres commandes connexes à l'invite de commande, suivez CE lien qui a été mentionné dans les commentaires d'une autre réponse.

P.S. : Voici la liste de commandes actuelle [au moment de la rédaction, dernière mise à jour le 21 août]:

ASP.NET - Wiki EntityFramework - Commandes NuGet/DNX

12
BiLaL

Voici les paramètres mis à jour pour RC2 de .NET Core (mai 2016)

dotnet ef dbcontext scaffold -c RRStoreContext -o Model 
"Data Source=(local);Initial Catalog=DBNAME;Integrated Security=True"     
Microsoft.EntityFrameworkCore.SqlServer --force

Notez que Microsoft.EntityFrameworkCore.SqlServer est le nouveau nom du package qui doit être utilisé dans la commande. J'ai ajouté le paramètre force pour écraser les fichiers existants. Le paramètre "o" est le nom du répertoire de sortie. Et c'est maintenant dotnet au lieu de dnx.

Depuis la version actuelle, les dépendances dont vous avez besoin dans votre project.json sont

"dependencies": {
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Tools": {
      "type": "build",
      "version": "1.0.0-preview1-final"
    }
  },

Remarque: Le type de 'build' signifie que tout ce qui référençant votre assembly ne prendra pas ceci DLL comme dépendance car il n'est nécessaire que pour l'outillage).

9
Simon_Weaver

@ErikEJ a développé un outil très utile pour cela. Ce qui génère des classes POCO simplement en faisant un clic droit sur le projet et en vous fournissant une instance de serveur SQL. Vous pouvez le télécharger depuis ici et les étapes sont clairement mentionnées ici .

2
vivek nuna