2009-05-31 15 views
2

編集:みんな、確かにEntity FrameworkはASP.NET MVCではありませんでしたが、おそらくタイプミスでした!
昨日私は、Entity Frameworkでいくつかの悪いことを列挙しているthis articleというクロスを受けました。そして、いくつかのGoogleのものをやった後、私はthis oneを見つけました。これは基本的にここのディフェンダーです。
Lazy Loading、TDD、データファーストアプローチ:Entity Frameworkの中心にあるこれらの致命的な弾丸はありますか?

  • EFは、ビジネスロジックは、部分クラス
  • に入るので、EFが故障ではありません、それはTDDの開発に適合していないため、
  • 故障ではありません。これら2つのポストは、次のようなエンティティフレームワークのいくつかの主要な問題を議論しましたそれは芸能の重要な部分は
  • EFオブジェクトとしてデータを扱うので、それはほとんどの人が遅延ロードが硬いので
  • EFが故障ではありませんデータ最初の開発を行うことを受け入れるため
  • EFは失敗失敗されていないではありません - 怠惰負荷がperfを破壊する可能性があるormance
  • その設計ツールは、それが今、ソース管理には本当に私を気にポイントを

をマージするための貧弱な戦略を持っているのでEFが故障ではありません1.0レベル

  • あるので、EFは故障ではありません上記リストには、TDDフィットネス、レイジーロードリーク、およびソース管理の問題があります。ここ

    そして、私の質問は以下のとおりです。

    1. は、IユニットIは、EFを使用する場合は十分自分のアプリケーションのメソッドをテストすることができませんか?
    2. レイジーローディングは難しいとはどういう意味ですか?それはEFによって全くサポートされていませんか?
    3. EFがソース管理に結合するための戦略が悪いとはどういう意味ですか?ソリューション内の通常のファイルと同様に、すべてのファイルがチェックイン/チェックアウトされるわけではありませんか?

    私はここで尋ねようとしていることをクリアしたいと思っています。感謝します!

  • +1

    ASP.NET MVCまたはEntityフレームワークについてお話ししていますか?それらは完全に別々の2つのものなので、質問を明確にする必要があると思います。 – Noldorin

    +1

    私はASP.Net MVCではなくADO.Net Entity Frameworkを意味すると思います。 ASP.Net MVCはWebフレームワークですが、Entity Frameworkはデータベースフレームワークです。 ASP.Net MVCはTDDに最適であり、ビヘイビア優先とデータ優先開発をサポートします。 – ckarras

    +0

    編集のためのThomas、ありがとう、私はEntity Frameworkを意味しました。 – Galilyou

    答えて

    1

    問題のタイプミスを削除していただきありがとうございます。今私は私の答えを少し短くすることができます:-)

    エンティティフレームワークは、実際にはTDD/SOLID/Alt.Netの群衆が好まれるプログラミングのスタイルをサポートしていませんでした。これは、自信を持って投票することです。 EFでは、永続性フレームワークの周りにビジネスロジックを設計する必要があり、ビジネスロジックをテストおよび維持することが難しくなります。エンティティ・フレームワークを取り巻くすべてのツーリングのためにポジティブな面では、オブジェクト・モデルと永続性レイヤーを素早く稼働させることができます。

    EFの新しいバージョンでは、これがより良くなっています。私は、EF 4が持続性の無知なオブジェクトモデルをまだ許容しているかどうかはわかりませんが、これが最も重要な欠点でした。しかし、私の意見では、これは実際には、EFが、自信がない投票者のものとは異なるプログラミングスタイルのために作られたという事実を変えるものではありません。 EFはツールを重視し、ソフトウェアを構築するデータベース中心の方法であなたを助けます。ソフトウェアを構築するデフォルトの方法は、依然としてデータベースを作成し、そこからオブジェクトモデルを生成することです。

    私はEFを取り巻く問題のほとんどが可能なことについては考えていません。EFの部分をビジネスロジックから抽象化し、アプリケーションテストを構築することができます。問題は、どのようなスタイルのプログラミングがより簡単になるかということです。私は正しい仕事のために適切なツールを使うべきだと思います。データ駆動型の開発に慣れているチームにエンタープライズソフトウェアを構築する場合は、EFを使用する必要があります。持続性がビジネスロジックより重要でなく、TDD DDD、BDD、SOLIDなどのようなチームで働いているソフトウェアを構築しているなら、nHibernateのようなものを使用する方が良いでしょう。

    +1

    もう一度質問をチェックしてください、私は編集しましたか?事前に感謝 – Galilyou

    +0

    EFとNHibernateの長い見解の後、ありがとうMendelt、受け入れ! :) – Galilyou

    0

    EFに関しては、より良いものに変わりつつあります! :) EF4はちょうどすぐ近くにあり、何らかの声がまだ不平を言うにもかかわらず、私はなぜ彼らが迷惑をかけるのか分からない。 EFは最終的に成熟していないかもしれませんが、これは数年前の作品でしかなく、少なくとも信頼性と柔軟性のあるフレームワークです。

    1

    開発者は、Entity Framework 1.0(.NET 3.5 SP1)に多くの苦情がありました。現在のリリースのEF 4.0(バージョン2ですが、.NET 4.0の一部としてリリースされたため)は、これらの苦情のほとんどを解決します。あなたはすでにdownload EF 4ベータ1 MSDN加入者の場合はできます。

    Entity Framework DesignチームとADO.NET Team blogは、さまざまなシナリオについて話ポストの最近のシリーズは、そのうちの最大の少数を示すために永続無知とPOCOのサポート、N層サポート、T4テンプレートですEF 4.0でサポートされていています。 TDDとデータ/モデル/エンティティ前述の変更によって、最初にサポートされています。レイジーローディングもそこにあります。

    +0

    私は実際のプロジェクトでそれを適用しようとしています。私は実際のプロジェクト(会社のポリシー)にVS 2010 Betaを使用することはできません。現在のリリースについての説明はありますか? – Galilyou

    +0

    @ 7alwagyの場合は、Linq to SQLまたはEFP 4.0の機能の中間ステージングプラットフォームであるEFPocoAdapterを使用する必要があります。私はEFPocoAdapterを使用しましたが、私はそれに壁を打つことはなく、EFがもっと良いと期待しています。あなたがそれを行えるのであれば、常にnHibernateがあります。 – aleemb

    関連する問題