8

私はEF 4.1のビデオとチュートリアルを見ていましたが、CodeFirstの利点を理解していません(一部のDBが3-4の非常に小さなテーブルを除いてDBを最初に作成するのは怠惰です)。CodeFirstとDatabase Firstの利点は何ですか?

ほとんどの場合、データベースエディタでデータベースを作成することが最も一般的です。これは、エンティティモデルでの編集が速く、すべての関係を選択して関連付けを正しく作成することができます。私は命名規則などに挑戦していることは知っていますが、コードのように見え、コード化するにはあまりにも多く、コードファーストを管理するのは非常に混乱しています。

CodeFirstは何ができ、Dbは最初にできないのですか?

答えて

17

CodeFirstはDBが最初にできないことはできません。一日の終わりには、両方ともEntity Frameworkを使用しています。 codefirst使用の

主な利点は以下のとおりです。

  • 開発スピード - あなたはあなただけのコーディングを開始DBの作成を心配する必要はありません。多くのDBA経験がないプログラミングのバックグラウンドから来ている開発者に適しています。また、自動的にデータベースの更新が行われるため、変更をモデル化するたびにDBも自動的に更新されます。
  • POCOs - コードは多くの自動生成コードで終わることはありません。あなたはそれぞれのクラスを完全にコントロールできます。
  • シンプル - あなたが見る更新または詳細情報については

を維持するためにEDMXモデルを持っていないCode-first vs Model/Database-first 、ここCode-First or Database-First, how to choose?

+2

(いくつかの改善がEF6に行われている)データベースは、最初のSPおよび関数の結果とのより良い統合であると思われます10は非常に起こりそうです。コードが生成されている限り、私はそれがどのくらい汚いか気にしません。自動更新データベース、これは興味深いと思う、私はそれをチェックします。 –

+5

CodeFirstは、DBが最初にcannotすることはできません。 –

+0

データベースが常にあなたのエンティティを反映するので、マッピング機能が悪いとCodeFirstが無効になります... –

2
移行がCodeFirstためEntityFramework 4.3で有効になった

、そう することができますモデルからデータベースへの変更を簡単に更新できます。Reference 1

詳細ビデオ:Complete Reference Video

7

DataCentricのアプローチから、私はいつも人々がコードファーストアプローチで作成したがっていることを奇妙に感じます。私のデータベースを設計するとき、私はすでにテーブルのそれぞれがクラスであるかのように考えています。リンク先とデータの流れデータベース全体を通してシステム全体をイメージすることができます。

私はいつもあなたが基礎から学び、あなたの基礎を正しいものにし、他のものはすべて従うと教えられてきました。私は多くの異なる企業のためにたくさんの異なるシステムを作成しています。私がそれをするスピードは、強力なデータベースモデルを取得した後、ビュー/ストアドプロシージャを作成するカスタムコードジェネレータを実行します。私のController/BusinessLayer/DataLayerと一緒に、これらをまとめて、私がしなければならないのはフロントエンドを作ることだけです。

最初にデータベースを生成するためにシステム全体をコードで作成しなければならない場合は、他のすべてのアイテムを作成する必要があります。私は、何らかの意味で正しいと言っているわけではなく、システムを開発するにはおそらくより高速で経験豊かな方法があると確信していますが、今までは見つけられませんでした。

話してくれてありがとうと私の意見が少し助けてくれることを願っています。

+1

私はコードが最初に絶対に役に立たないことを発見しました。簡単にデータベースツールを使用して、データベースを読み込んでコードを生成するテキストテンプレートを最初に作成します。データベース設計者は、視覚化して変更するのが簡単です。そして何よりも、あなたは完全なコントロールを持っています。 –

1

あなたのプロジェクトによって異なります。私はシンセサイザーのアイディアをいくつか考えようとします:

  • あなたはエンティティクラスを完全にコントロールしています。それらはもう生成されません。T4テンプレートを更新したり、部分クラスを使用したりする必要はありません。
  • EF7ではEDM7モデルがCodeFirstモデルのために消えてしまいます。したがって、EFに移行する予定がある場合、または近い将来にEF7を使用できるプロジェクトが開始されている場合は、注意してください。
  • 複数の開発者がモデルで作業している場合にマージが簡単になる +/-注釈とマッピングは手動で行う必要があります。私はコードの最初のアプローチは軽く(膨らみが少ない)、我々は物事を単純に保つことができる(視覚的モデルは望ましくない複雑さを隠すかもしれない)と言うだろう。 Open to Fluent API。
  • Power Toolsでモデルを視覚化することはできますが、モデルは読み取り専用です。モデルへの変更はすべて手動で行う必要があります(最初のエンティティを最初から作成することもできます)。部分モデル(図)はありませんが、モデルは十分に小さくなければなりません。
  • プロパティの決して越えて行くときに管理するために引用遅く、困難ではありません正直プロパティとメタデータのためのC#のコードを書く
関連する問題