web-dev-qa-db-fra.com

Votre projet de démarrage ne fait pas référence à Microsoft.EntityFrameworkCore.Design

J'ai 2 projets dans ma solution, j'ai un projet avec Entity Framework Core installé:

enter image description here

Et dans l'autre projet d'API Web ASP.NET, j'ai ces packages:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.Web" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.Razor" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.0" targetFramework="net461" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net461" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="11.0.1" targetFramework="net461" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.4.1" targetFramework="net461" />
  <package id="WebGrease" version="1.6.0" targetFramework="net461" />
</packages>

Quand je lance Add-Migration dans PMC:

L'API de votre projet de démarrage ne fait pas référence à Microsoft.EntityFrameworkCore.Design. Ce package est requis pour que les outils de base Entity Framework fonctionnent. Assurez-vous que votre projet de démarrage est correct, installez le package et réessayez.

J'ai installé Microsoft.EntityFrameworkCore.Design dans le projet de démarrage au lieu du projet de données qui contiendra toutes les entités et maintenant cela fonctionne, est-ce ainsi que le projet doit être configuré?

15
el_pup_le

J'ai trouvé la solution ici: http://obscureproblemsandgotchas.com/development/c/dotnet-core-ef-migration-not-working/

En bref, modifiez votre fichier csproj et ajoutez à l'entrée suivante de votre section PropertyGroup:

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
13
astrowalker

Vous avez plusieurs projets? Si oui, vous devez créer le projet Host en tant que projet de démarrage à partir de l'Explorateur de solutions et définir le projet par défaut (quel projet a DBContext) dans PMC. Exécutez ensuite Add-Migration commande.

8
vivek nuna

J'ai eu cette erreur parce que Visual Studio a utilisé par défaut le noyau du cadre d'entité plutôt que le cadre d'entité old-school pour .NET Framework: cadre d'entité 6. C'était ma solution:

EntityFramework\Update-Database

Ou référencez explicitement la version:

EntityFramework6\Update-Database

Il convient également de vérifier que le bon projet est sélectionné dans la console du gestionnaire de packages. Cela aime revenir à d'autres projets la moitié du temps!

6
noelicus

"Votre 'nom de projet' ne fait pas référence à votre projet de démarrage Microsoft.EntityFrameworkCore.Design. Ce package est requis pour que les outils de base Entity Framework fonctionnent. Assurez-vous que votre projet de démarrage est correct, installez le package et réessayez."

Si vous obtenez cette erreur, essayez 'Build> Clean Solution' dans votre projet, puis essayez à nouveau d'exécuter votre commande.

Cela a fonctionné dans mon projet. Ou vous pouvez consulter la documentation .

J'utilise la version .Net Core 3.1 dans mon projet.

2
Ahmet Tınastepe

Définissez le projet avec des entités comme projet de démarrage et exécutez la commande d'échafaudage. ça a marché pour moi. N'oubliez pas de définir le retour du projet de démarrage après.

0
Shivanka

Essayez de définir à nouveau votre projet Web comme projet de démarrage et cet avertissement devrait disparaître. (Clic droit sur projet web> Définir comme projet de démarrage)

0
Anuj Shukla

Si vous souhaitez effectuer des migrations sans ajouter de références EF dans vos services, votre bibliothèque avec accès aux données a besoin d'un moyen de construire une instance de votre DbContext. Vous pouvez le faire en implémentant IDesignTimeDbContextFactory, par exemple:

public class MyContextFactory : IDesignTimeDbContextFactory<MyContext>
{
    public MyContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<MyContext>();
        optionsBuilder.UseSqlServer("Data Source=MyDatabase");

        return new MyContext(optionsBuilder.Options);
    }
}
0
Edwin van der Thiel