2013-05-22 15 views
6

私と私のチームは新しいプロジェクトを開始する予定であり、私たちはいくつかの新しい(またはそれほど新しい)技術の探索とテストの段階にあります。大きなプロジェクトのエンティティフレームワーク

今日まで、DBDataReaderで古典的なADOを使用していましたが、遅延ロード用のプロキシと場合によってはDataTablesを使用していました。

チームは3人の開発者と1人のデータベースデザイナーで構成されています。 私たちのプロジェクトは、少なくとも130のテーブルから構成されています。

私たちの新しいプロジェクトは成長する可能性があるので、100台のテーブルが確実に期待されます。

私は読んでいて、最後の2日間はEF5で簡単なテストをしていましたが、私たちはそれを使うべきかどうかまだ決めることができません。

  1. 私たちは通常、大きなプロジェクトを多くの「モジュール」プロジェクトに分割して、ソース管理下でより速くより良い作業を行うことができます。 DB全体に1つの大きな「edmx」を使用する予定ですか?
  2. 私たちはDatabase Designerを持っているので、CodeFirstはオプションではないと思われます.EFをDatabase Firstアプローチで使用する価値はありますか?
  3. データベースを最初に使用すると、すべてのリレーションシップを正しく検出し、使用する準備ができていることがわかります。 (追加の設定では、私はDataAnnotationsを書かなければならない、あるいはDbContextをovverideする必要があるということを意味します)
  4. 個人的に私は自分自身がSQLでデータベースを設計することに非常に自信を持っています。私が持っている唯一の煩わしさは、エンティティがクラス内で変更されたときに、選択、削除、更新、挿入スクリプトをすべて更新する必要があるときです。あなたは何だと思います。..

を EFは私のために世話これを取るだろうが、これを除いて、私はそれはパフォーマンスが低下し、最終的に我々はそれに慣れていないので、私の生産が遅くなりますことを信じることを始めていますそれは価値がありますか?

* DataAnnotationsとDbContext ovveride以外は、プレーンなT4テンプレートを使用してテーブル(スキーマ)を作成する人は誰ですか?

+1

Entity Frameworkに関する多くの質問があります。質問に回答する形式の種類が多すぎます。:http://stackoverflow.com/faq 質問の範囲を制限してください複数の質問を作成する。 エンティティフレームワークは優れたテクノロジーであり、私の意見では、このフレームワークを学ぶ努力は、チームの決定にかかわらず利点です。 – IAbstract

+1

あなたの時間をありがとう概要、 私は現在の状況(ジレンマ)をできるだけ早く適切に提示しようとしていました。 私はそれぞれの質問について深い分析を期待していません。 –

+2

どのバージョンのVisual Studioを使用していますか? VS2012では、同じ.edmxに対して複数の図を使用することができます。 –

答えて

1

私はEFを使用しないことに決めました。 大きなプロジェクトで使用するリスクはありません。 私は、より多くのSQLコードを書いて、生成されたモデルを扱うか、SQLプロファイラをチェックするよりも、より多くの時間を費やす方が好きです。クエリを生成した。..

は君たちので、もし私が新しい質問を開きます ..私は再びまっすぐADOに行く前に、私はFluentDataとDapperのに打撃を与えるだろう*

...あなたのコメントありがとうございましたこれらの2つの軽いORMについてコメントしたいと思います。後でリンクを投稿します。

+0

Fluent APIを使用してEF 5を見てみることを強くお勧めしますが、まだDB Firstを使うことはできますが、コードとDBの間には、ダイアグラムが必要です。Fluent APIを使用して一般的なタスクを解決する方法を知るためのいくつかのリンク - [Here](http://msdn.microsoft.com/en-us/data/jj591617.aspx) と[ここ]( http://msdn.microsoft.com/en-us/data/jj591620) – profMamba

+0

私の会社では、さまざまなデータベースを管理するためにSQL Server Data Toolsプロジェクトを幅広く使用しています。アプリケーション側では、まずEF DBがあります。うーん、移行はSSDT経由でもひどいことではありません。 –

+0

NHibernateを試みたことがありますか?あなたのようなEntity Frameworkのことです。 Entity Frameworkインフラストラクチャは非常に複雑で柔軟性がありません。しかし、NHibernateはXMLを使います。 – bayramucuncu

-1

データベース構造が成熟している場合は、EFを使用するとよいでしょう。

データベース構造が開発されている場合、または時間の経過とともに大きく変更される場合は、EFが最適でない可能性があります。

構造の変更(およびデータベースレイヤでのインタフェース変更の可能性がある)がある場合は、EFをリフレッシュする必要があります。すでに開発済みのコードベース内でデータベースの変更をどのように管理するかを検討する必要があります。

+3

-1 EFを使用せずにDB構造を変更した場合は、何も変更する必要はありませんか? –

+0

私は質問に答えてくれて助けになりました。あなたは答えがあるようですが、おそらくそれを提出するべきです。 – pearcewg

+0

私は完全な答えはありませんが、あなたが言及したポイントについて100%確信しています。それは役に立たなかった。 –

4
  1. 複数のモデルを作成することを絶対にお勧めします。それぞれのテーブル、ビュー、およびストアドプロシージャをマップするマッピングを選択できます。
  2. データベースは、まずは大丈夫です。
  3. データベース制約が設定されている場合、EFはそれらを認識します。あなたはマイナーな変更を回避することはありませんが、すべてのEFはすべてかなり良い仕事をしています。
  4. EFを使用すると、クエリのパフォーマンスに多少の影響があります。しかし、ほとんどの場合、それは問題ではありません。受け入れられないパフォーマンス・ヒットが発生する場合は、必要に応じて独自のSQLをEFに注入して最適化することができます。

私はかなり早くEFの使い方に慣れ親しんでいるので、あまり知られていないと長い間は問題にはならないと思います。

+0

#2は真ですが、モデルやPOCOのカスタマイズには注意が必要です。 – IAbstract

+2

@IAbstractはい、OPのケースでは、ADO.NETやプロキシを使用していると思われるので、それほど大きな問題ではないかもしれません。 –

+0

私はコード内マッピング(code-firstはコードマッピングだけの愚かな名前で、IMO)とデータベース優先アプローチの両方を得ることができると付け加えたいと思います。 'EF Power Tools'のVS-addを使用して、 'R​​everse engineer code-first'オプションを使用して、既存のデータベースからコードマッピングを作成します。 –

関連する問題