2009-05-21 12 views
20

私はLinq To SQLを実装したプロジェクトを持っていて、とても満足していました。しばらくの間、最大の問題はデザイナーがバグだったということでした。Entity Frameworkを使用して後悔している人は誰ですか?

残念ながら、私のプロジェクトでは複数のテーブル継承が必要になり、Linq to SQLはそれをサポートしていません。私はEntity Frameworkに切り替えることにしました。これは、複数の継承をサポートしており、マイクロソフトが目指す方向性のようです。しかし今、私はその決定を後悔し始めている。

たとえば、Load()を呼び出しますか? WTF?私がそのデータを望まないなら、私はそれを求めていないでしょう!エンティティフレームワークのすべての肛門の特徴を解明することは、私の側では大きな棘になっています。

とにかくトンネルの終わりに光がありますか?私がすべて終わったら、EFを使うのは価値があるか、恐ろしい決断を下したのだろうか?

最後に、私は質問したいと思います:マイクロソフトはどこにORMのものを持っていましたか? RailsのActiveRecordは数年前から美しく簡単に作業してきました。

+1

答え自体はありませんが、おそらく解決策です。 ActiveRecord ... –

答えて

11

あなたは一人ではありません。 .NET 4.0のEntity Frameworkに加えられている拡張機能については、a series of posts on the ADO.NET blogがあります。彼らはかなり重要なようですが、あなたのニーズに十分であるかどうかにかかわらず、あなただけが判断できます。

+0

リンクありがとうございます。彼らは確かに、彼らが正の方向に彼らの目標を変更しているように聞こえる。そして、彼らはアクセス可能な方法で遅延読み込みを使用することを計画しているように思えます。 – grimus

7

まあ、VS2010 beta is available。あなたは仮想マシンをスピンアップして、4.0のEFがあなたに合っているかどうかを確認できますか?

個人的には、私はまだLINQ-to-SQLに取り組んできましたが、おそらく他の機能はまだ必要ないためです。

+0

+1 L2Sのアドバイス - 私は100%あなたとその1つです。 EFv4に関しては、EFで進歩しています(ただし、VS2010ベータの「データベースからのモデルの更新」ウィザードではEFモデルを使用できなくなりました)。しかし、私はEFv4によって生成されたSQLをより心配しています - 私が行った最初のラウンドでは、(まだ)冗長な結合などがたくさんあるモンスタークエリを生成するSQLジェネレータのバグを修正していません... ...ああ、それはまだベータですので、おそらくEFv4 RTMは良いでしょう... – KristoferA

3

私は、実際には、現実的には、すぐにそのv4バージョンでEntity Frameworkを使用することを楽しみにしています。確かに、私たちのケースでは、それは疫病よりも悪い、もはやサポートされていない神秘的なORMを取り除くことを伴います - だからEF v4は私に神のように見えます! 1のため:-)

マルク・

3

私はEF v1.0を持つsourly失望していました。それは多くのことを約束しましたが、実際は非常に制限的であり、恐ろしく実行され、既存のアプリケーションやインフラストラクチャをサポートしていませんでした。

つまり、EF v2.0は非常に有望です。マイクロソフトでは、設計プロセスを大衆に開放し、EFが成功するのを見たいと思っている人たちに、提案、助言、意見を提供するはずのさまざまな使用シナリオに適合するかどうかを確認できるようにしました。 Microsoftはまだ対応していない場合は、最後にhttp://blogs.msdn.com/efdesign/

あなたがこの努力の結果を見ることに興味がある、または独自の入力を提供したい場合は、ここでEFデザインのブログを、チェックアウトする必要がありますさまざまなシナリオに適合する柔軟なORMを作成するには、常にNHibernateがあります。私はLINQをSQL、Entity Framework、そしてHibernateにしばらく使用してきました.3つのうち、NHibernateは最もフレンドリーで、柔軟で成熟したフレームワークです。それはビジュアルデザイナーの方法ではあまりありませんが、あなたが限界、不器用、奇妙な行動やEFの悪いパフォーマンスに苛立っていれば、NHibernateは素晴らしい選択肢です。

+1

アドバイスをいただきありがとうございます。プロジェクトをやり直すのであれば、最初からNHibernateに行ったと思います。 – grimus

2

フォローアップの場合:

私はEntity Frameworkで当面断念しています。コードの書き換えはトランスクリプト化されており、私はその結果に満足していません...怠惰な読み込みサポートの欠如のために大いに。

私はLinq to SQLに戻り、今のところ単一のテーブル継承を試してみることに決めました。子供の種類はあまり多くありませんので、当面は醜いが容認できる解決策になるはずです。 VSとEntity Frameworkの新しいバージョンがリリースされたら、その時点でもう一度切り替えることを検討します。これは、新しいバージョンの変更が有望に見えるからです。

+0

私もEFで始まり、良い古いLinq2Sqlに戻ることに決めました。欠点がなくなったばかりでなく、Linq2Sqlは、より良い/より速いSQLを構築することもあります(たとえば、EFはLIKE文を使用しません)。 – Gidon

3

私は絶対に同意します。レイジーローディングは私のエンティティフレームワークを殺したものです。これは、コンテキストインスタンスにエンティティを接続したり切り離したりすることで、ワームの蔓延を防ぎます。私は本当にこれらのことについて心配したくありません。しかし、誰がマイクロソフトの半製品を使って作業していないのですか?新しいリリースでは、パッチを当てることになってうれしいです。それまでL2Sはあなたの最善の賭けのようです。

関連する問題