web-dev-qa-db-ja.com

EntityFrameworkを使用しない場合

私はEFをいじって、何を処理できるかを確認してきました。また、多くの記事や投稿では、EFを使用できるさまざまなシナリオについて説明していますが、何らかの理由で「コン」側を見逃した場合。さて、私の質問は、どのようなシナリオでEntity Frameworkから離れるべきか

この分野での経験がある場合は、EFでうまく機能しないシナリオを教えてください。別のテクノロジーを選択したいと思ったときに経験したいくつかの欠点について教えてください。

41
driAn

私も「遊んでいる」段階にあり、永続性の不可知論が組み込まれていないことを心配していましたが、「回避策」があると確信していました。

実際、n層アーキテクチャでの回避策すらありません。

WCF + EF

article を正しく読んだ場合、(WCFを使用して)ネットワークを介してエンティティをシリアル化することに問題は見られず、永続性の無知も問題ではありません。

これは、主にユニットテストにPIを使用するためです。

ユニットテスト可能です! (私は思う)

このシステムでは、モックサービスを使用するだけで済みます(たとえば、工場から作成できる別のインターフェイスベースのクラスでサービスへの呼び出しをラップすることによって)。これにより、プレゼンターコードがテストされます(EF/DALを単体テストする必要はありません。これはMicrosoftの仕事です!)もちろん、完全な信頼を得るには統合テストが必要です。

別のデータベースに書き込みたい場合、これはDAL層で行われ、構成ファイルを介して簡単に実行できます。

私のタペンスの価値

私の意見-EFについてあなた自身の決心をし、ラウンドをしているそれに関してすべての運命と暗闇に躊躇しないでください。しばらくはそうなると思いますし、MSは来年かそこらで障害を解決するでしょう。ダン・シモンズによれば、PIは間違いなくやってくる。

[〜#〜]編集[〜#〜]:私は銃を飛び越えて、良い政治家のように実際には答えなかったことに気づきました尋ねられた質問。おっと。しかし、他の誰かがそれが役に立つと思う場合に備えて、私はこれを残しておきます。

6
Duncan

Vote of No Confidence は、ORM/Datamapperフレームワークに適切な機能とその実装を知っていると信じている人の目には、いくつかの失敗や機能の欠落を示しています。

これらの問題のどれもあなたにとって大きな問題ではない場合、なぜあなたがそれを使うべきではないのか分かりません。左右に爆破するのはバグだらけだとはまだ聞いていません。それに対するすべての注意は哲学的です。私はたまたま不信任決議に同意しますが、それはあなたがそうすべきだという意味ではありません。 EFの動作が気に入った場合は、それを選択してください。同時に、情報に基づいた決定を下すために、少なくとも不信任決議を読み、各問題の基本的な理解を得ることをお勧めします。

その問題の外で、あなたの質問の核心に-パフォーマンスの問題が本番環境に入る前に微調整できるように、生成されているSQLを監視する必要があります。バックエンドでprocを使用している場合でも、データベースに何度もアクセスする可能性のあるシナリオを探し、それに応じてマッピングを作り直したり、シナリオをフェッチしたりします。

21
Daniel Auger

潜在的に大きな問題の1つ:Entity Framework1.0は永続性の無知をサポートしていません。これは、ビジネス層がデータアクセス層に依存していることを意味します。

アプリケーション全体が同じプロセスでホストされる場合(IISのWebサイトなど)、これは問題ありません。

ただし、エンティティを(たとえば、SilverlightまたはWindows Mobileクライアントに)リモートする必要がある場合、エンティティはネットワークを介して簡単にシリアル化されません。エンティティをネットワーク経由で送信するための個別のデータ転送クラスと、エンティティクラスとDTO間でデータをマーシャリングするための追加のロジックを作成する必要があります。

編集:スペル。

9
Ryan Michela

すべてのデータモデルがアプリケーションエンティティに適切にマッピングされるわけではありません。マッピングが比較的単純でない場合は、EntityFrameworkをスキップします。あなたはそれを明確な利益なしに機能させるために逆立ちをしていることに気付くでしょう。

Anders Hejlsbergは、オブジェクト/リレーショナルマッピングについていくつかの興味深いコメントをしました ここ

3
Corbin March

EFはPOCOをサポートしていないため、適切な単体テストを作成するのは難しい場合があります。それは 不信任決議 でのそれに対するノックの1つでした。

あなたが良いテストを書きたいのなら、EFは障害を引き起こします。あなたは それらを回避する ができますが、それは自明ではありません。

2
Bramha Ghosh

SQL CE 3.5SP1とEntityFramework 4.0 Beta 1はどちらもID列をサポートしていますが、これら2つの製品を一緒に使用すると(少なくともリストされているバージョンまで)、ID列はサポートされません。主キーは自分で設定する必要があります。

それ以外は、SQLCEでEFを楽しんでいます。

0
Scott