9

MVC3で焦点とEF4.1のほとんどが「最初のコード」の周りにあるようだ - 私は、次の基準を満たす任意の例やチュートリアルを見つけることができないよう:MVC3とEFデータ:ベストプラクティスは何ですか?

  • は、既存のSQLServerデータベースを使用しています

は、このような例やチュートリアルが存在するか確認のために

  • 勧告(私たちは、複数のウェブ同じデータアクセスクラスを共有するアプリがあります)ウェブ&データアクセスのための別々のプロジェクトを持っていますか?どのようにこれを達成するための文書化された「ベストプラクティス」、あるいはこのように構造化されたソリューションを持たないことの根拠はありますか?

  • 答えて

    5

    これは非常に一般的なシナリオであり、マッピングにEDMXファイルを使用するか、コードでマッピングを定義する(コードを最初に使用する)かどうかによって異なります。

    両方のシナリオは、あなたは、Visual StudioのEFツールでビルドして既存のデータベースからEDMXを作成し、あなたがPOCOクラスとDbContext派生クラスを取得するにはDbContext T4ジェネレータテンプレートを使用するデータベース最初

    • として行うことができます
    • あなたはEF Power Tools CTPをダウンロードし、あなたは、データannotatioを追加するこれらのアプローチのどちらもあなた

    ためのコードマッピング、POCOクラスおよびコンテキストを生成するために、そのリバースエンジニアリング機能を使用しますns。エンティティのデータ注釈は、非常に簡単なアプリケーションを実行していない限り、クライアントの検証には使用しないでください(悪い方法です)。通常、ビューにはさらに高度な期待があり、ビューでの検証はエンティティごとに異なる場合があります。たとえば、挿入ビューと更新ビューでは異なるバリデーションが必要な場合があり、エンティティ上の単一データアノテーションセットでは実行できません。そのため、検証のために特殊なビューモデルにデータ注釈を移動し、エンティティをビューモデルに変換したり、その逆にする必要があります(これを簡略化するためにAutoMapperを使用できます)。

    とにかく、バディークラスを介してpossible to add data annotations to generated classesですが、それは良い習慣ではありません。

    +0

    エンティティデータアノテーションについては、両方とも同意し、同意しません。単純な制約や長さとnullの可能性については、エンティティクラスのデータアノテーションは受け入れられると思います。それ以外の場合は、アンチパターンである貧血ドメインモデル(http://martinfowler.com/bliki/AnemicDomainModel.html)を作成しました。合意されたビューモデルは、より複雑なビジネスシナリオを持ち、より複雑な検証要件を持つ必要があります。 – Jeff

    +0

    edmxはWebプロジェクトの一部ですか、それとも独自のクラスライブラリですか?私は貧血ドメインモデルを避けたいので、検証のための注釈を削除する質問を更新しました。 – chris

    +0

    私は別のクラスライブラリを使用します。 – Jeff

    関連する問題