Entity FrameworkコアOnModelCreating vs移行、正しい開発ワークフロー

asp.net-core c# entity-framework-core

質問

次のことをすることの違いを私に説明してください:

  • EFコアを持つクラスを飾る関係やマッピングを定義するOnModelCreating内のコードを使用して、このようなDataAnnotations VSとして属性?
  • dotnet ef migrationsを使用してMigrationクラスを作成すると、 "xyz" VSがOnModelCreatingに設定されます

私はある種の「開発ワークフロー」を作ろうとしていますが、ドキュメントはそれほど明確ではありません。

私は、

  1. 最初の "データベースコンテキスト"を作成する
  2. 私のモデルを表す一連のクラスを作成する
  3. OnModelCreatingをオーバーライドして、各Modelオブジェクトのマッピング方法を指定する
  4. 私が何かを変えて何度も、 add migrationsef updateを実行add migrations

これはEntity Frameworkコアで動作する正しいフローですか?

受け入れられた回答

DataAnnotations VSなどのEF Core属性を持つクラスを飾る。OnModelCreating内のコードを使用してリレーションシップとマッピングを定義します。

データ注釈は「インライン」ですが、エンティティをパーシスタンスロジックと組み合わせることができます。それは私の意見では、スイートスポットです。 OnModelCreatingを使用すると、より強力で柔軟な「Fluent API」を使用できますが、永続ロジックをエンティティから切り離すことができます。時には、データアノテーションとFluent APIの両方を組み合わせて使用​​することもあります。

dotnet ef migrationsを使用してMigrationクラスを作成すると、 "xyz" VSがOnModelCreatingに設定されます。

私はこれを理解しているか分からない。マイグレーションの代替手段はありません。

EF(コードファースト)で作業する方法は次のとおりです。

  1. 私は自分のエンティティを書き、それらにデータ注釈を追加する
  2. 私は、移行を生成し、そこからSQLスクリプトを取得してから、移行コードを削除します
  3. データベースに対して.SQLを実行します。
  4. コードを実行する
  5. エンティティの変更
  6. 新しい移行.SQLを生成し、プロジェクトの一部として格納します。

基本的には、新しい/変更されたコードと互換性があるようにデータベースを更新する場合は、「マイグレーション」が必要です。

OnModelCreatingは、エンティティのデータベースへのマッピング方法をEFに伝える必要がある場合に必要です。あなたは2つのことを混同すべきではありません。



Related

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