EF モデルには、アプリケーション のクラスとプロパティがデータベースのテーブルと列にどのようにマップされるかについての詳細が格納されます。 EF モデルを作成するには、主に次の 2 つの方法があります。
Code First の使用: 開発者は、モデルを指定するコードを記述します。 EF は、エンティティ クラスと開発者が提供する追加のモデル構成に基づいて、実行時にモデルとマッピングを生成します。
EF デザイナーの使用: 開発者は、EF デザイナーを使用してモデルを指定するボックスと線を描画します。 結果のモデルは、EDMX 拡張子を持つファイルに XML として格納されます。 通常、アプリケーションのドメイン オブジェクトは概念モデルから自動的に生成されます。
EF ワークフロー
どちらの方法も、既存のデータベースをターゲットにしたり、新しいデータベースを作成したりするために使用でき、4 つの異なるワークフローになります。 どちらが最適かを調べる:
| 私はコードを書きたいだけです... | デザイナーを使いたいです。 | |
|---|---|---|
| 新しいデータベースを作成しています | Code First を使用してコードでモデルを定義し、次にデータベースを生成します。 | Model First を使用して、ボックスと線を使用してモデルを定義し、次にデータベースを生成します。 |
| 既存のデータベースにアクセスする必要がある | Code First を使用して、既存のデータベースにマップするコード ベースのモデルを作成します。 | Database First を使用して、既存のデータベースにマップするボックスと線モデルを作成します。 |
ビデオを見る: どのような EF ワークフローを使用する必要がありますか?
この短いビデオでは、違いと、自分に適した違いを見つける方法について説明します。
発表者: ローワン・ミラー
ビデオを見た後も、EF Designer と Code First のどちらを使用するかを決めるのに慣れない場合は、両方について学習してください。
内部のしくみを探る
Code First と EF Designer のどちらを使用するかにかかわらず、EF モデルには常にいくつかのコンポーネントがあります。
アプリケーションのドメイン オブジェクトまたはエンティティ型自体。 これは、多くの場合、オブジェクト レイヤーと呼ばれます。
エンティティ データ モデルを使用して説明する、ドメイン固有のエンティティ型とリレーションシップで構成される概念モデル。 このレイヤーはしばしば「C」という文字で< c0>概念的に表されます。
データベースで定義されているテーブル、列、リレーションシップを表すストレージ モデル。 このレイヤーは、多くの場合、 ストレージ用に後の "S" と呼ばれます。
概念モデルとデータベース スキーマの間のマッピング。 このマッピングは、多くの場合、"C-S" マッピングと呼ばれます。
EF のマッピング エンジンでは、"C-S" マッピングを利用して、エンティティに対する操作 (作成、読み取り、更新、削除など) をデータベース内のテーブルに対して同等の操作に変換します。
概念モデルとアプリケーションのオブジェクト間のマッピングは、多くの場合、"O-C" マッピングと呼ばれます。 "C-S" マッピングと比較すると、"O-C" マッピングは暗黙的で 1 対 1 です。.NET オブジェクトの図形と型を照合するには、概念モデルで定義されたエンティティ、プロパティ、リレーションシップが必要です。 EF4 以降では、オブジェクト レイヤーは、EF に依存しないプロパティを持つ単純なオブジェクトで構成できます。 これらは通常、Plain-Old CLR オブジェクト (POCO) と呼ばれ、型とプロパティのマッピングは名前の一致規則に基づいて実行されます。 以前は、EF 3.5 では、エンティティが EntityObject クラスから派生し、"O-C" マッピングを実装するために EF 属性を実行する必要があるなど、オブジェクト レイヤーに固有の制限がありました。
.NET