Entity Frameworkでコードファーストデザインを使用する3つの理由
1)破片が少なく、膨らみが少ない
既存のデータベースを使用して.edmxモデルファイルと関連するコードモデルを生成すると、自動生成されたコードの膨大な山ができます。何かを壊したり、変更が次世代で上書きされたりしないように、これらの生成されたファイルには絶対に触れないようにしてください。コンテキストとイニシャライザは、この混乱でも一緒に詰まっています。計算された読み取り専用プロパティのように、生成されたモデルに機能を追加する必要がある場合は、モデルクラスを拡張する必要があります。これは、ほとんどすべてのモデルの要件となり、すべての拡張機能を使用することになります。
最初にコードを使用すると、手動でコード化したモデルがデータベースになります。構築している正確なファイルは、データベース設計を生成するものです。追加のファイルはなく、プロパティなど、データベースが認識する必要のないものを追加するときに、クラス拡張を作成する必要はありません。適切な構文に従う限り、それらを同じクラスに追加できます。必要に応じて、Model.edmxファイルを生成してコードを視覚化することもできます。
2)より優れた制御
最初にDBに移行するとき、アプリケーションで使用するためにモデルに対して生成されるものに翻弄されます。時々、命名規則が望ましくない場合があります。時々、関係や関連性があなたの望むものではない場合があります。また、API応答に遅延読み込みを伴う一時的でない関係が発生することもあります。
ほとんどの場合、発生する可能性のあるモデル生成の問題の解決策はありますが、最初にコードを実行すると、最初から完全で細かい制御ができます。ビジネスオブジェクトの快適さから、コードモデルとデータベース設計の両方のあらゆる側面を制御できます。関係、制約、および関連付けを正確に指定できます。プロパティの文字制限とデータベースの列サイズを同時に設定できます。どの関連コレクションを積極的にロードするか、まったくシリアル化しないかを指定できます。要するに、あなたはより多くのものに責任がありますが、あなたはあなたのアプリデザインを完全に制御しています。
3)データベースのバージョン管理
これは大きな問題です。データベースのバージョン管理は難しいですが、コードファーストとコードファーストの移行により、はるかに効果的です。データベーススキーマは完全にコードモデルに基づいているため、ソースコードをバージョン管理することで、データベースのバージョン管理に役立ちます。固定ビジネスデータのシードなどを行うのに役立つコンテキストの初期化を制御する必要があります。また、コードファーストマイグレーションの作成も担当します。
初めて移行を有効にすると、構成クラスと初期移行が生成されます。最初の移行は、現在のスキーマまたはベースラインv1.0です。その時点から、バージョンの順序付けに役立つように、タイムスタンプが付けられ、記述子でラベル付けされたマイグレーションを追加します。パッケージマネージャーからadd-migrationを呼び出すと、UP()関数とDOWN()関数の両方でコードモデルで自動的に変更されたすべてを含む新しい移行ファイルが生成されます。UP関数はデータベースに変更を適用し、DOWN関数はロールバックするイベントで同じ変更を削除します。さらに、これらの移行ファイルを編集して、新しいビュー、インデックス、ストアドプロシージャなど、その他の変更を追加できます。これらは、データベーススキーマの真のバージョン管理システムになります。