長所と短所などに関するトピックに関するかなりの数の投稿を読んだので、この質問は以前に何度も尋ねられたことを知っていますが、どのアプローチが自分に適しているかまだ判断できません。私は Web プログラミングの初心者で、SQL DB 管理者 / レポート作成のバックグラウンドを持っています。将来的には 30 ~ 40 のテーブルを持つことになるかもしれない独自の Web サイトを構築することにしました。
私は両方のアプローチを見てきましたが、デザイナーのシンプルさが好きで、モデル全体を目の前で見るのが好きなため、Entity Model アプローチを好みます。これは、1 つのスナップショットで全体像を示します。また、私は強力なプログラマーではありませんが、DbContext ジェネレーター テンプレートを使用して POCO を生成し、クラス間のすべてのリンクを行う方法に感銘を受けました。
ただし、私はモデル ファースト アプローチが好きですが、いくつかの欠点があると感じています。それらが実際の欠点であるかどうかはわかりません。それとも、モデル ファースト アプローチとコード ファースト アプローチについて十分に理解していないだけです。これには新しい。
モデル ファーストのアプローチを使用するのをためらう理由は次のとおりです。
- 主に、MVC 3 を使用したモデル ファースト アプローチのチュートリアルを見つけるのに苦労しているためです。 POCO を再生成しても失われない変更。MVC 3 関連のほとんどのチュートリアルでは、Code first アプローチを使用しているようです。ほとんどの人は、これはチューターが EF に集中するのではなく、tuts でより多くの MVC を表示したいためだと言います。個人的には、Microsoft が Code First の方法論を他の方法論よりも支持しているためだと思います :)
- バディ クラスを作成するのが良い方法である場合、MVC 3 についてこれを示す多くのチュートリアルが見つからないのはなぜですか? Buddy Classes は View Models の別名ですか? また、MVC 3 で使用されているこれらのバディ/ビュー モデルを示すマイクロソフトのチュートリアルが見つからないのはなぜですか?
-2 つのテーブル間で基本的な 1 対 1 の関係を作ろうとしていました。モデルでは、まず、テーブルの 1 つで FK を使用するのではなく、各テーブルの ID キーを同じフィールドに設定する必要があります。3 つ以上のテーブルが 1 対 1 の関係で互いにリンクされている場合、少し混乱する可能性があります。 . コードで最初にこれを回避する方法は、モデルビルダーを使用して手動で設定することです。MF では、私がまったくやりたくない XML に入ることで関係を変えることができると思います。
-コードファーストの問題に関するサポート/ヘルプの追加
Code First アプローチの使用を躊躇する理由は次のとおりです。
- 私は初心者のコーダーです。
-プロジェクトが拡大するにつれて、テーブルと関係を追跡することが非常に難しくなっていることがわかります。
-モデル図はありませんが、私はこのアイデアが本当に好きだと言わざるを得ません.
-構成クラスを介してエンティティをデータベースにマッピングすることは不可能だと思います:)。
- テーブルを更新するには、コードと DB を変更する必要があります。モデルでは、DB とコードを自動的に更新するモデルを最初に 1 つだけ変更します。バディ クラスを使用している場合は、これらも更新する必要があるかもしれません。
また、Code First にデータベースを生成させるのではなく、手動でデータベースを作成し、コード ファースト API を使用して EF にアクセスするという点で、Code First と Database first のアプローチを組み合わせている人もいます。
私の頭は、すべてのオプションと欠点、長所と短所でぐるぐる回っています。私は自分のウェブサイトの作成を続けたいだけで、どのアプローチをとるべきかを考えません. 私が言ったこと、および/または将来より主流になると彼らが考えていることに基づいて、どのアプローチが最適だと思うかについて、誰かが私に洞察を与えることができますか?
どうもありがとうデイブ