私は新しいアプリケーションの設計を始めていますが、Linq2SQL または Linq2Entities に関する人々の意見と、迅速な開発のためのより優れたテクノロジであると彼らが感じていることを知りたいと思っています。
また、ADO.net データ サービスに関する調査も行っています。
私は新しいアプリケーションの設計を始めていますが、Linq2SQL または Linq2Entities に関する人々の意見と、迅速な開発のためのより優れたテクノロジであると彼らが感じていることを知りたいと思っています。
また、ADO.net データ サービスに関する調査も行っています。
はい、Slaceに同意しました。
選択するフレームワークに注意して、すべてのニーズを満たすようにしてください。
たとえば、私は最近、主に次の理由により、私のニーズを促進しなかったため、過去2週間にわたってかなりしっかりと作業した後、作業プロジェクトからEntityFrameworkを削除しました。
それ以外は、コマンドとフレームワークは単純明快に見えました。EFを使用した理由は次のとおりです。
さらに読む(別のSO投稿):
LINQ to SQLはデッドオアアライブですか?
EFを選びたいのですが、L2SとEFのデバークルをどうすればよいかわかりません。また、L2Sが本当に死んだアヒルの場合は、肩をすくめてください。確かにEFでの私の主な不満は、NotSupportedExceptionです-これを取得せずにlinqでメソッド呼び出しを実行できれば、遅延読み込みを回避できます...
次の設計要件を満たしている場合、私は LINQ to SQL の大ファンです。
私はEntity Frameworkで多くの作業を行ったわけではありませんが、私が知っていることと行ったことから、LINQ to SQLが使用するのと同じデータベースから生成された場合、パフォーマンスが良くないということです。
パフォーマンスが低いのは Entity Framework の性質によるもので、使用しているデータベース サーバーに特定のプロバイダーではなく ADO を使用します。
ADO.NET Data Services(おっしゃるとおり)で使用する場合、EntityFrameworkはそのままで機能します。(ADO.NET Data Servicesを介して)LINQ-to-SQLを使用してデータを更新する場合は、を実装するためにいくつかの作業を行う必要がありますIUpdatable
。幸いなことに、私は今週そのことについてブログを書いています。
両者の間の私の全体的な考えはここでカバーされていますが、それ以来私は少し和らぎました、ここを見てください。
基本的に、現時点ではLINQ-to-SQLを好みますが、次のバージョンではEFがより使いやすくなると期待しています。したがって、なぜ私はLINQ-to-SQLをADO.NETDataServicesで動作させるために取り組んでいます。
シンプルから適度なデータベース スキーマの場合、Linq2SQL は非常にうまく機能し、セットアップと使用がより簡単です。これは、検証と承認/監査をサポートするために、部分クラスを介していくつかの小さな調整を加えて ORM に使用するものです。DBML デザイナーを使用して、テーブル/リレーションを追加します。DataContext を変更して抽象化し、監査と承認のためのフックを提供するテーブル値関数/ストアド プロシージャ (メソッドとしてデータ コンテキストにマップされる) の実装を提供できる具体的な実装を構築します。OnValidate と OnLoad のエンティティ クラスに部分メソッドを実装して、テーブル レベルで検証と承認の両方を行います。私が必要としているのはこれでほぼすべてだと思います。最近、私は
Linq 2 Sql は優れた選択肢だと思います。いくつかのポイント:
私の投票は Linq-to-SQL に行きます。これは、迅速な開発シナリオに適合します。始めやすく、使いやすい。さらに、Linq 式から適切で効率的な SQL クエリを生成します。
Linq-to-Entities は不格好です。L2S とは別に設定することになっている「高度な」機能を使用しようとすると、XML エディターを使用して EDMX モデル ファイルの編集を開始する必要があります (すぐに実行します)。 Microsoft が推奨する唯一の回避策/解決策は、XML エディターを使用して EDMX を手動でクランクすることです)。その上、非常に質の悪い/非効率的な SQL クエリを生成する傾向があります。
Microsoft は、Entity Framework の次のバージョンはより良くなり、L2S のすべての利点をサポートすると述べています。ただし、次のバージョンはすぐにはリリースされないため、それまでは L2S が最善の策です。
これはかなり古い質問ですが、上位投票の回答のLinqToSqlチアリーダーが私に関係しています。LinqToSqlには重大な欠点があります。
Visual Studio 2008 LinqToSql O /RDesignerを使用しないでください
とはいえ、EntityFrameworkにも重大な欠点があります。
利用できるはるかに優れたオプションがあります(NHibernateは現在すべての周りの最良のオプションです)。
あなたのほうが良いと断言できる人は誰もいません。
どちらの技術にも問題があります (NHibernate にも問題があります)。
私はLinq-to-SQLを使用していますが、それにとても満足しています。私の意見では、Linq-to-SQL の問題は EF よりも少ないです ^_^。
アップデートを試みるまで、L2S は素晴らしいと思っていました。それからそれは哀れでした。私が他のことをしている間、私の同僚はこの仕事のほとんどをしていました。彼は EF について、また過剰な構成可能性によって使用が面倒になった方法について話しました。
私たちは MSSQL をターゲットにしており、それは変わらないので、彼はデータベース プロバイダーの抽象化に関するすべてをハッキングできるのではないかと提案しました。しばらくして、彼はそれは良い提案だと私に言いました。
この回答が反対票を投じられた根拠について興味があります。実際の経験を説明し、代替戦略とそのアプローチの相対的な成功について説明します。反対票を投じるのは、誤解を招く、事実に反する、または単純なトローリングの回答です。
たまたま、私は EF と L2S の全体について自分の立場を変えましたが、自分とは異なる意見を表明しているという理由だけで何かに反対票を投じることは幼稚であり、StackOverflow の精神に完全に反するという事実は変わりません。
ORM については、Microsoft 以外のソリューションを検討することをお勧めします。nHibernate は、これら両方のフレームワークの優れた機能に加えて、さらに優れたソリューションを備えた優れたソリューションです。はい、より急な学習曲線ですが、流暢な nHibernate がそれを助けます。努力する価値は十分にあります。
Linq to SQL は、Microsoft がもう更新しないため、最近行き止まりになっています。自分のプロジェクトで少しの間使用しましたが、実際の SQL に比べて性能が劣っていることに気付きました。もちろん、短期的には実行する方が簡単に思えるかもしれませんが、アプリケーションの開発サイクルの過程で、SQL のパワーをより楽しんでいることがわかるでしょう。
LINQ TO SQL は、フレームワークの抽象化レイヤーに大きく依存していて、SQL を追求する時間/エネルギー/欲求がない人にのみ採用されるべきだと思います。
もう 1 つ覚えておくべきことは、SQL とアプリケーションの間の追加レイヤーには独自のコストがかかるということです。速度の違いは、簡単に気付くものではありませんが、そこにあります。
個人的には、始めたばかりの人はすぐに SQL に移行し、LINQ to SQL に失敗することをお勧めします。