2017-11-09 2 views
1

.NETコアとEntity Frameworkコアを使用した開発中にデータベースの変更に苦労しています。EFコアを使用した開発中にデータベースの変更を処理する方法は?

新しいモデルを作成してdbContextに追加すると、Startup.csのdbContext.Database.EnsureCreated();であっても、新しいテーブルは作成されません。

これまでにdotnet ef database dropを実行するとすべてのテーブルが作成されますが、新しいモデルを追加するたびにdbをシードする必要があります。 毎回多くのマイグレーションを作成すると、私には良いアイデアのようには見えません...

誰かがより良い方法を提案できますか?

+4

コード1は、解決するよりも多くの問題を引き起こすギミックです。必要に応じてデータベース構造を自分で作成し、流暢なAPIを使用してEFに記述します。あなたは長期的にはより幸せな人になるでしょう。 :) – Nathan

+1

@Nathanと同意します(スキーマ比較ツールを使用してスクリプトを作成します) – gsharp

+1

これを処理するEFCの方法は、実際に移行です。しかし、それは自動ではありません。毎回マイグレーションを追加し、データベースを更新するコマンドを実行する必要があります。 –

答えて

0

残念ながら、EFコアはEF 6のような自動移行をサポートしていないようです。これは、すべての変更に対して、新しい移行を追加する必要があることを意味します。 Startup => Configureでこのコードを追加すると、最新の移行が自動的に適用されますが、ドキュメントを正しく理解すれば、変更ごとに新しい移行を追加する必要があります。

 using (var serviceScope app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope()) 
     { 
      var context = serviceScope.ServiceProvider.GetRequiredService<YourDbContext>(); 
      context.Database.Migrate(); 
     } 

参考: EntityFramework Core automatic migrations https://github.com/aspnet/EntityFrameworkCore/issues/6214

はまた流暢なAPIを使用して構造を自分で作成する方法について@Nathanに同意します。

これが役に立ちます。

関連する問題