3

多層 (3 層) アプリケーションを作成したいと考えています。EF は最適な ORM です。

EF がプレゼンテーション レイヤーで直接作成するエンティティを使用する必要がありますか?それとも、新しいカスタム エンティティを作成してエンティティをマップする必要がありますか? その場合、カスタム エンティティの上にインターフェイスを作成する必要がありますか?

EF が生成する .edmx ファイルをデータ層に配置する必要がありますか?

ありがとう

4

2 に答える 2

3

個人的には、プレゼンテーション レイヤー用の ViewModel を作成します。EF モデルを可能な限り抽象化しておきたいと考えています。

ViewModel にはインターフェイスは必要ありません。単純なPOCO / DTOです。

于 2012-04-27T11:22:05.430 に答える
2

データベースのニーズとデータ コンシューマのニーズはしばしば対立するため、通常は異なるモデルが必要になります。

たとえば、新しい顧客を追加するユーザー ストーリーを考えてみましょう。ストーリーには通常、オフィスの電話番号とファックス番号の「必要性」が含まれます。

すぐに、データベース設計者は「これはデータの繰り返しです」と言うでしょう。1 対多の関係が必要です。これにより、2 つの電話番号だけでなく、事実上無限の数の電話を種類別に収容できるようになります。(そして、電話番号が多対多または 1 対多であることに煩わされないようにしましょう)

一方、レポート、画面、モバイル デバイス、UI の経験はありますか? そのデザイナーは、「保存できる電話番号の数は気にしません。オフィスの 2 つだけを扱うつもりです」と言っています。番号、およびファックス番号」ユーザーは核心で非正規化されていると言えます:)

  1. データベースモデルを、ある種の合理的な正規化レベルに忠実に保ちます。
  2. ユーザー インターフェイスのデータ モデルをユーザーと同じように非正規化します。
  3. あるモデルを別のモデルにマッピングする中間層を作成します。
于 2012-04-27T12:04:00.647 に答える