コードファーストを使用して既存モデルに新しいモデルを追加する

asp.net-core ef-code-first entity-framework-core visual-studio-2015

質問

現在、私は以下のように上記を達成しています。

質問 :既存のテーブルのデータをそのまま維持するには正しいアプローチですか?私はそれをむしろ長らくやっていると感じています。それを行うための提案や代替/正しい方法はありますか?

  1. myProjectContext.csファイルに新しいエンティティ(モデル)と対応するDbSet<...>エントリをmyProjectContext.csます
  2. VS2015からの既存の移行とSQL Server Dbからの対応する__EFMigrationsHistoryテーブルの削除
  3. PM> add-migration mytMigration -context myProjectContext実行PM> add-migration mytMigration -context myProjectContext
  4. 新しく生成されたエンティティ(モデル)に関連するコードを除いて、新しく生成されたmytMigration.csファイルのすべてのコードをコメント化します。
  5. PM> update-database -context myProjectContext実行します。

新しいテーブル(新しく追加されたエンティティに対応)は、新しい__EFMigrationsHistoryテーブルと共に、退出するDbで作成されます。既存のすべてのテーブルのデータはそのままです。

更新:

私はこの公式のASP.NETチュートリアルに従っています - 彼らのアドバイスごとに、以下のように私たちのコンテキストに依存性注入を登録しました:

Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            var connection = @"Server=myDevMachine\SQL2012Instance;Database=myDb;Trusted_Connection=True;";
            services.AddDbContext<ABCTestContext>(options => options.UseSqlServer(connection));
...
...
}

人気のある回答

既存のものは削除しないでください。あなたは正しく追加されていますか?

あなたがしなければならないステップ:

  1. 新しいエンティティを作成する
  2. コンテキストにDbSetを追加する
  3. add-migration newMigrationNameを実行します。
  4. update-databaseを実行する

Add-Migrationは、既存のデータベースとモデルを調べ、移行を生成してスキーマを更新します。

Update-Databaseを実行すると、EFは移行履歴テーブルを確認し、まだ実行されていない移行を実行します。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ