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?
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.
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]:
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).