質問: ちょっと、私はEFコアを使い始めました。すべてうまく動作します。私は`context.Database.Migrate()`メソッドを呼び出し、データベースを作成します。しかし、私のコンテキストオブジェクトが`DBSet`持っていても、移行履歴以外のテーブルは作成されません。 誰もがこの問題で私を助けることができますか?
回答: `context.Database.Migrate()`自体は*移行を生成*しません。代わりに、作成した移行を処理します。 データベースの変更ごとに、 `Add-Migration {sensibleName}`呼び出す必要があります。 スタートアップクラスは引き続き`context.Database.Migrate()`を呼び出してデータベースをチェックし、未処理の移行を処理します。 たとえば、データベースを作成したら、一般的なルールは[ `Add-Migration Initial`を呼び出すことです。 `context.Database.Migrate()`呼び出すと、データベースが存在するかどうかを確認し、存在しない場合は作成し、 `Initial`移行が適用されているかどうかを確認し、そうでない場合は適用します。 `Add-Migration SmallChange`呼び出すと、次の起動時に次のように同じことが起こります。 1. データベースは存在しますか?はい 2. 移行初期が適用されていますか?はい 3. マイグレーションSmallChangeが適用されていますか?いいえ 4. マイグレーションを適用するSmallChange あなたの最初の移行は、次のような少し見えるはずです: ``` public partial class Initial : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "HelloWorld", columns: table => new { Id = table.Column(nullable: false) .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), MyString = table.Column(nullable: true), }); } } ``` 移行がそうでない場合は、 `DbContext`が正しく構成されていない可能性があります。テーブルがまだ適用されていない場合は、パッケージマネージャコンソールからデータベースアップデートを実行して、 `Update-Database -Verbose`で何が起きているのかを確認してください