52 votes

En essayant de définir l'Entité Cadre de base dans .Net de projet Standard

Je me demandais si je pouvais régler mon EntityFrameworkCore dans un .NET Standard 2.0 projet facilement. J'ai suivi ce Tutoriel mais il exige soit .NET de Base ou de Cadre.

Quand je suis arrivé à cette étape:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

J'ai eu cette erreur:

Projet de démarrage 'nom_projet' cibles cadre".NETStandard'. Il n'y a pas d'exécution associés à ce cadre de travail, et les projets de ciblage, il ne peut pas être exécuté directement. Pour utiliser le Cadre de l'Entité de Base du Gestionnaire de Package Outils de la Console avec ce projet, ajoutez un fichier exécutable projet de ciblage .NET Framework ou .NET de Base qui fait référence à ce projet, et de définir comme projet de démarrage; ou, mettre à jour ce projet de la croix-cible .NET Framework ou .NET de Base.

Je me demandais si je pouvais le set-up de mon entité .NET Standard ou si il y a une meilleure pratique que je devrais faire à la place?

46voto

NightOwl888 Points 4622

Projet de démarrage 'nom_projet' cibles cadre".NETStandard'. Il n'y a pas d'exécution associés à ce cadre de travail, et les projets de ciblage, il ne peut pas être exécuté directement. Pour utiliser le Cadre de l'Entité de Base du Gestionnaire de Package Outils de la Console avec ce projet, ajoutez un fichier exécutable projet de ciblage .NET Framework ou .NET de Base qui fait référence à ce projet, et de définir comme projet de démarrage; ou, mettre à jour ce projet de la croix-cible .NET Framework ou .NET de Base.

Le message d'erreur veut dire ceci: Il n'y a pas une telle chose comme un exécutable .NET de projet Standard. Il n'y a pas de runtime pour elle car c'est simplement un type de mécanisme de renvoi pour différents environnements d'exécution.

En termes de programmation, c'est un peu comme essayer d'instancier une interface. Vous ne pouvez pas le faire parce qu'il n'y est pas mise en œuvre pour l'exécuter.

La solution est de choisir une plate-forme exécutable de votre application pour exécuter sur. Vous pouvez référencer le plus grand nombre .NET bibliothèques Standard que vous le souhaitez à partir de votre exécutable (tant qu'ils sont compatibles avec votre runtime), mais l'exécutable lui-même ne peut pas s'exécuter .NET Standard. Il doit cibler une plate-forme telle que .NET Framework ou .NET de Base afin d'exécuter.

En d'autres termes, dans le but d'utiliser une commande à l'échafaud votre base de données, vous devez cibler un moment de l'exécution. De sorte que vous aurez besoin pour exécuter cette commande alors que le ciblage de votre exécutable principal de projet ou d'ajouter un nouveau projet exécutable à votre solution pour exécuter sur.

Vous pouvez faire cela à l'exécution de votre commande sur le CLI avec l'option --démarrage du projet=[Path_to_your_main_Project]

14voto

Majid AGT Points 298
  1. Clic droit sur le .NET de Base app dans votre projet

  2. En cliquant sur Définir comme Projet de Démarrage

3voto

Christian H Points 31

Premier élément de réponse ici. Je suis en train d'essayer de le faire aussi. J'ai eu l'Échafaudage, mais Net Standard ne semble pas charger les Extensions des propriétés de la table.

Assurez-vous d'installer le EntityFrameworkCore.Package d'outils pour EF. Vous avez seulement besoin 4.6.1 soutien qui est la valeur par défaut. Si je figure sur la façon de fixer les extensions de problème, je vais poster ici.

Ces deux sont nécessaires. Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Outils

1voto

bbqchickenrobot Points 2273

Les œuvres suivantes de la dotnet CLI en supposant que vous avez déjà un fichier exécutable projet de démarrage dans la solution:

dotnet ef dbcontext scaffold "Server=myServerName; Database=dbName; User Id=someUser; Password=myPassword123;" Microsoft.EntityFrameworkCore.SqlServer  --project ../MyLibraryProject/ -c MyDbContext -o FolderName

vous pouvez trouver plus d'informations ici:

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#other-target-frameworks

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X