4

可能性の重複:
EF 4.1 Code-first vs Model/Database-firstEF CodeFirstの長所と短所

私はちょうど、私はEF CodeFirstの利点は何 について専門家から聞きたいEF 4.0 CodeFirstについての学習を開始し、欠点?

+4

がhttp://stackoverflow.com/questions/5446316/ef-4を参照してくださいあまり関係あり-1 code-first-vs-model-database-first –

+0

@WouterdeKortこれは私が探しているものです。 – saber

答えて

7

私はそれぞれのアプローチが異なるシナリオに適していると思う:データベース-最初またはモデルファーストを推奨している

シナリオ:安定したスキーマと

  • 長期持続データベースデータベースへ
  • 変更モデルはインクリメンタルです
  • モデルを1つの図で表示し、そこから更新したい場合
  • moを分割することができますデルコード-最初が推奨されている非重なり図

シナリオに:

  • モデルの開発は、データベース
  • モデルクラスに興味がないプログラマによって行われ
  • ロジックが含まれていますモデルクラスには奇妙な(非標準的な)構造があります
  • モデルは、設計時にすべて知られていない多くのアセンブリ間で分割されます(内線番号)
  • データベースは短命です(例:ランタイムアプリケーションのを)
  • データベースは、あなたが刻々と変化する構造を含むのに十分なダイナミックである長期的なデータベースをしたい場合は、お使いのモデル/スキーマがために再利用する汎用的なクラス/テーブルを考えることが多い

変更することができます変化する/文脈依存の目的。


更新:

私は今、追加の例のコード・ファーストの使用をお勧めします

  • あなたが書いて、迅速かつ容易にLocalDBの統合テストを実行できるようにする(代わりに
  • ダイアグラムとマッピングウィンドウを経由する代わりに、1つの場所にモデルとマッピングが表示されている場合
    • 誰かがプロパティを正しくマップした場合などに表示したい場合は、 ConcurrencyCheck
    • として
  • あなたは簡単に非ローカル環境でのスキーマ生成を無効にすることができますので、データベースの文字が
5

私はいつもデータセントリックのアプローチを主張してきましたが、これは長所と短所がどこから来たのかと考えています。

データベース設計と開発の強みがあれば、データベーススキーマから開発する方が簡単で直感的です。しかし、オブジェクトやクラスをよりよく考える場合や、クラスモデルから直接作業している場合は、CodeFirstの観点から始めるほうがよいでしょう。

個人的には、自分のクラスを生成する「DataFirst」からのCodeFirstの観点から、より多くの変更を加える必要があることがわかりました。

0

主な相違点は、コード・ファーストではすべてをコードで定義する必要がありますが、モデル/データベースではまずXML/Designerですべてを定義し、コードでは最小限のもののみを定義する必要があります。

たとえば、双方向ナビゲーションプロパティを使用する場合は、それぞれのエンティティにそのコードを記述する必要があります。これは、他の方法を使用するときに自動的に生成されます。

私は電源コードが最初にあなたを与えますが、ほとんどの時間私はすべてのことをするのに気にすることはできません。

ほとんどの場合、まったく同じことが起こります。それはあなたがそれをモデル化する方法です。

もう1つの欠点は、(現在)コードで最初に変更を加えたときに、テーブルを削除して再作成することです。すべてのデータを失う(もちろん、データベースをシードすることはできますが、手動で入力したデータは返されません)。これは、Code First Migrations製品がリリースされたときに解決されます。

+0

デメリットの1つは、データベースを削除することに同意しません。これは完全に構成可能なもので、デフォルトではデータベースを削除しませんが、モデルが最初に変更されたときにデータベースが最初に行い、変更を検出したときと同じようにエラーがスローされます。 –

+0

@WouterdeKort - 私の指摘は、データベースではまずデータベースの変更がモデル内で簡単に更新され、新しいコードが生成されたということでした。コードでは、データベースを削除して再作成しない限り、より手作業のプロセスです。コードとデータベースの両方で手動で変更する必要があります。 –

関連する問題