2

Récemment migré de EF Core 1.0 à EF Core 2.0 et fonctionne correctement. Aujourd'hui, j'ai ajouté une nouvelle table (-premier code) et ajouté à mon DbContext avec:Entity Framework Core 2.0 Add-Migration ne crée aucun fichier de migration

public virtual DbSet<Foo> Foos { get; set; } 

Quand je lance une migration, avec mon DbContext dans un projet distinct (rappelez-vous cela était à travailler avant), la migration se termine, mais aucun fichier de migration n'a été créé. Ce fut tout travail avant Core 2.0 en utilisant:

http://paultechguy.blogspot.com/2017/04/entity-framework-core-migrating-and.html

PM> Add-Migration GradePremade -project Mfc.MfcRepositoryModel -verbose -context MfcDbContext -StartupProject web.xyz 
Using project 'class.xyz\Mfc.MfcRepositoryModel'. 
Using startup project 'web.xyz'. 
Build started... 
Build succeeded. 
C:\Program Files\dotnet\dotnet.exe exec --depsfile C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\web.xyz.deps.json --additionalprobingpath C:\Users\pcarver\.nuget\packages --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\web.xyz.runtimeconfig.json "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.entityframeworkcore.tools\2.0.0\tools\netcoreapp2.0\ef.dll" migrations add GradePremade --json --context MfcDbContext --verbose --no-color --prefix-output --assembly C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\Mfc.MfcRepositoryModel.dll --startup-assembly C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0\web.xyz.dll --project-dir C:\development\xyz\class.xyz\Mfc.MfcRepositoryModel --root-namespace Mfc.MfcRepositoryModel 
Using assembly 'Mfc.MfcRepositoryModel'. 
Using startup assembly 'web.xyz'. 
Using application base 'C:\development\xyz\web.xyz\bin\Debug\netcoreapp2.0'. 
Using working directory 'C:\development\xyz\web.xyz'. 
Using root namespace 'Mfc.MfcRepositoryModel'. 
Using project directory 'C:\development\xyz\class.xyz\Mfc.MfcRepositoryModel'. 
Finding DbContext classes... 
Finding IDesignTimeDbContextFactory implementations... 
Finding application service provider... 
Finding BuildWebHost method... 
No BuildWebHost method was found on type 'xyz.Program'. 
No application service provider was found. 
Finding DbContext classes in the project... 
Found DbContext 'ApplicationDbContext'. 
Found DbContext 'MfcDbContext'. 
Using DbContext factory 'MfcContextFactory'. 
Using context 'MfcDbContext'. 
Finding design-time services for provider 'Microsoft.EntityFrameworkCore.SqlServer'... 
Using design-time services from provider 'Microsoft.EntityFrameworkCore.SqlServer'. 
Finding IDesignTimeServices implementations in assembly 'web.xyz'... 
No design-time services were found. 

Aucune erreur qui semblent évidentes pour moi, et aucun fichier de migration créés. J'ai fait un Remove-Migration pour démarrer propre, mais toujours pas de travail.

+0

pour des grimaces, je rebaptisés ma base de données et re-administraient les Add-Migrations. Exactement les mêmes résultats. – user2737646

+0

Avez-vous trouvé une solution pour cela? J'ai exactement le même problème. – Peter

Répondre

1

je devais marquer un projet comme projet de démarrage.

0

Vous devez mettre à jour votre Program classe pour ressembler à ceci

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var host = BuildWebHost(args); 

     host.Run(); 
    } 

    // Tools will use this to get application services 
    public static IWebHost BuildWebHost(string[] args) => 
     new WebHostBuilder() 
      .UseKestrel() 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 
} 
+0

Program.cs pour mon application web a déjà cela. J'ai aussi un Program.cs dans mon référentiel de bibliothèque de classes séparé. Remarque J'ai mentionné un lien dans mon message d'origine des étapes que j'ai suivies pour obtenir une bibliothèque de classes distincte avec un référentiel fonctionnel; cela a bien fonctionné avant EF Core 2.0 et VS 2017 15.x. – user2737646

+0

@ user2737646 utilisez-vous .NetCore 1.x ou .NetCore 2.0? – Abdi

+0

J'utilise. NetCore 2.0, VS 2017 15.3, EF Core 2.0 – user2737646

0

Retirez toutes vos IDesignTimeDbContextFactory<TContext> mises en œuvre de votre projet de migration et d'enregistrer votre DbContext dans votre méthode ConfigureServices dans votre classe de démarrage, de la même façon que vous le feriez enregistrer lors de l'exécution de l'application.

Ensuite, exécutez vos commandes de migrations comme d'habitude, cela a fonctionné pour moi après des heures de maux de tête.

-1

J'ai essayé de mettre à jour la version d'exécution dans le fichier .csproj pour inclure:

<RuntimeFrameworkVersion>2.0.3</RuntimeFrameworkVersion> 

dans la balise PropertyGroup. Cela a fonctionné pour moi.

Voir: Russell Seamer's Solution

2

Il existe un problème dans les bibliothèques de classes .NET Core. La solution réussie est de mettre ce qui suit dans le fichier csproj du projet Model:

<PropertyGroup> 
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> 
</PropertyGroup> 
+1

Simple et succinct - travaillé pour moi! – Mike

+1

Je ne peux pas le marquer comme accepté, ce n'était pas ma question, j'adore simplement votre réponse! – Mike