現在、(非 EF) データベースとの下位互換性を必要とするプロジェクトに取り組んでいますが、モデルから新しいデータベースを作成したいと考えています。
このタスクでは、現在のスキーマをどこかに (XML 形式で) 保存し、スキーマと一致するまで生の SQL 更新手順でデータベースを更新します。これは正常に機能しています。
また、modelBuilder は現在のスキーマと一致します (私のアルゴリズムでは、context.Database.Create() によって新しく作成されたデータベースと保存されたスキーマの間に違いはありません)。
スキーマは開発の後の段階で変更される可能性が高いため、Up-to-date データベースを作成するには2 つの方法をサポートする必要があり、これら 2 つを組み合わせることができるかどうか疑問に思っていました。保存されたターゲット スキーマを更新する必要があるためです。更新ステップを作成し、modelBuilder を更新して、必要なデータベースを正確に作成します。これは非常に面倒な作業です。
したがって、スキーマを modelBuilder エントリに「変換」する方法はおそらくないため、POCO クラスにはマップされていない情報が多くあるため (これにより、正しいデータベースを更新し、最初にクラス データベースを更新するアプローチが妨げられます)、唯一の (目に見える)私) 方法は、スキーマを更新するために使用できる Database.Create() を呼び出したときにコンテキストが作成する CREATE TABLE ステートメントを何らかの形で収集し、それに応じて更新手順を実行することです。
Create() メソッドを呼び出しながらコンテキストをログに記録することで同じことができることは十分にわかっていますが、これにはかなりの時間がかかり、不要なクエリが発行され、削除する必要があるダンプ データベースが作成されます。その後、モデルを更新するたびに。
そのため、modelBuilder (またはもちろんコンテキスト) を調べて、テーブルがどのようにマップされるかを何らかの形で確認する方法があるかどうか疑問に思っていました。