2017-10-25 23 views
0

.netコア2.0でデータベース移行を追加する際に問題があります。私は次のエラーを取得してい :.netコア2のエンティティフレームワークの移行が機能しない

An error occurred while calling method 'BuildWebHost' on class 'Program'. Continuing without the application service provider. Error: One or more errors occurred. (Webpack dev middleware failed because of an error while loading 'aspnet-webpack'. Error was: Error: Cannot find module 'aspnet-webpack' 
    at Function.Module._resolveFilename (module.js:469:15) 
    at Function.Module._load (module.js:417:25) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at Object.<anonymous> (C:\Users\Dries\AppData\Local\Temp\quzf2u2y.rt0:83:19) 
    at __webpack_require__ (C:\Users\Dries\AppData\Local\Temp\quzf2u2y.rt0:20:30) 
    at createWebpackDevServer (C:\Users\Dries\AppData\Local\Temp\quzf2u2y.rt0:62:26) 
    at C:\Users\Dries\AppData\Local\Temp\00o3h05d.izo:114:19 
    at IncomingMessage.<anonymous> (C:\Users\Dries\AppData\Local\Temp\00o3h05d.izo:133:38) 
    at emitNone (events.js:86:13) 
Current directory is: D:\Projects\Jeroen Fiers\Projecten\Fiers\bin\MCD\Debug\netcoreapp2.0 
) 
Unable to create an object of type 'ApplicationDbContext'. Add an implementation of 'IDesignTimeDbContextFactory<ApplicationDbContext>' to the project, or see https://go.microsoft.com/fwlink/?linkid=851728 for additional patterns supported at design time. 

私のProgram.csが、以下のように調整されます。

public class Program{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 
    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 
} 

奇妙な部分は、移行は(1時間)前に働いているということです。

+0

npm consoleのプルダウンで選択したスタートアッププロジェクトとプロジェクトを確認してください。私にとっては、どちらも、オブジェクトクラスが定義されているデータアクセスライブラリのpointrfである場合にのみ動作します – Artem

+0

現時点では1つのプロジェクトしかありません。 – Zozala

答えて

0

Omgこのような愚かな間違い(そして私はそれを本当に理解していない)。

私が掲載されこれはエラーになりますが、私はAdd-Migration InitialCreateを使用する場合、それだけで正常に動作https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

このリンク・サイスのようなコマンドdotnet ef migrations add InitialCreateを使用していましたか?

0

チェックあなたはStartup.csファイルのConfigure()方法で(例えば、データ・播種法など)いくつかのDBの初期化コードがある場合:あなたが行う場合には、あなたがそこに移動からそのコードを削除することで、あなたの問題を解決することができそれにProgram.csが、以下の方法でファイルのMain()方法:問題の

public static void Main(string[] args) 
{ 
    // REPLACE THIS: 
    // BuildWebHost(args).Run(); 

    // WITH THIS: 
    var host = BuildWebHost(args); 
    using (var scope = host.Services.CreateScope()) 
    { 
     // Retrieve your DbContext isntance here 
     var dbContext = scope.ServiceProvider.GetService<ApplicationDbContext>(); 

     // place your DB seeding code here 
     DbSeeder.Seed(dbContext); 
    } 
    host.Run(); 

    // ref.: https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/ 
} 

public static IWebHost BuildWebHost(string[] args) => 
    WebHost.CreateDefaultBuilder(args) 
     .UseStartup<Startup>() 
     .Build(); 

このような種類のEFコア2.xの中で、彼らはどのようにBuildWebHostメソッドの動作を変更しているという事実に起因しています作品:今それはConfigureを呼び出しますこのメソッドにデータベース初期化コードが含まれていると、予期しない問題が発生する可能性があります。

大きな問題は、最初のdotnet ef migrations add/dotnet ef database updateコマンド実行前(つまり、データベースがまだ存在しない場合)にシードコードが実行されるたびに誤解を招く例外が発生する可能性が最も高いことです。例外を起こさずに仕事をしてください。

詳細については、MS official EF Core 1.x to 2.x migration guidethis articleをご確認ください。最初の起動など、あなたのUIプロジェクトを設定UiProject & DataProject

:としてあなたが溶液中の2プロジェクトを持っている場合たとえば、

0

。 powershellでDataAccessプロジェクトに移動してください。

1: dotnet ef migrations add firstMigrate --startup-project ./UiProject 
2: dotnet ef database update --startup-project ./UiProject 
関連する問題