2009-06-10 13 views
8

エンティティへのlinqがリリースされたとき、誰もlinq to sqlが死んでいると言います。ASP.NET MVC + LINQ to SQLまたはエンティティ

しかし、Microsoftの従業員によるほとんどの書籍やサンプルプロジェクトでは、mvc + linq to sqlを使用します。

何らかの理由がありますか? SQLのlinqはPOCOの方が良いでしょうか?

+3

マイクロソフトでは、LINQ to SQLをサポートしていると言いました。 –

+0

はい、マイクロソフトはこれを言っていますが、だれも信じていません –

+2

それから、ネット4.0でLinqにSQLの変更を加えたことが証明されました:http://damieng.com/blog/2009/06/01/linq-to- sql-changes-in-net-40 –

答えて

9

Linq to SQL had its origins in a thought experiment。 Linqは概念証明を必要とし、LinqはSQLにそれを提供しました。

それ以来、ユーザコミュニティの多く(a few prominent Microsoft employeesを含む)は、特に小さなプロジェクト(例えば、NerdDinner)の場合、軽量のSQL Server ORMとしてLinq to SQLを採用しています。

furorは、ADO.NETチームによってthis postで始まりました。その中で、Linq to SQLは維持され、ユーザーコミュニティのフィードバックに基づいて機能が追加されましたが、Entity Frameworkは将来のデータアクセスの主な焦点になると述べました。

ユーザーコミュニティの多くはこの動きを「Microsoft is killing Linq to SQL」と解釈しました。

マイクロソフトはdisabled the provider model for Linq to SQL by sealing some critical classesの問題を解決していないため、Linq to SQLを効果的にSQL Serverでのみ使用できるようにしています。エンティティフレームワークはmultiple data providersのORMになります。残念ながら、the Entity Framework seems not quite ready for prime time

だから、それはあなたが誰と信じるかによって異なります。 Linq to SQLが本当に死んで埋葬されていると言っている多くのブロガーの推測(そしてそれらはちょうど推測である)を信じているか、それともLinq to SQL has a long life ahead of itと言っているDamien Guardのような人々を信じていますか?

0

ScottGuが書いたnerddinnerサンプルの章では、Linq-To-SQLを使用していますが、LINQ-to-SQLを推奨していませんが、LINQ-To-Entitiesのいずれも昇格しません。 ViewModel(Stephen Waltherはこれに素晴らしい投稿があります)&リポジトリパターンは、LINQ-To-SQLはASP.NET MVCアプリケーションの開発に最適です

+0

Stephenの投稿へのリンクを提供できますか? –

+0

2つのリンク - http://stephenwalther.com/blog/archive/2009/02/27/chapter-5-understanding-models.aspx http://stephenwalther.com/blog/archive/2009/02 /27/chapter-5-understanding-models.aspx – indyfromoz

1

サンプルがLINQ-to-SQLで書かれた唯一の理由は、設定は迅速かつ簡単です。

それ以外の場合は、のいずれかの ORMを使用して、EFかNHibernateなんかに合わせて調整できます。

0

私の意見では、Linq to Entityは現時点ではという良い候補ではありません。です。私がLinq To Entityについて嫌いにしたことの1つは、怠惰な読み込みの欠如であり、私がリポジトリを書き込むたびに私を壁の上に追いやった。私はそれが私のためにそれを殺したと思う。もう1つは、オブジェクトコンテキストの複数のインスタンスによって使用されているエンティティの接続と切り離しに関する問題です。それが私のためのもう一つのキラーでした。エンティティの関係などを再現しようとすると、多くのハッキングが発生しました。率直に言って、このフレームワークの次のリリースを待つのが良い方法だと思います。私は良いことがそれのために来ていると思う:)

1

個人的には、今はEntity Frameworkに慣れ始めます。より多くの機能を備えているため、プロバイダに依存せず、(おそらく)より積極的に開発されています。私が聞いた2つの最も一般的な苦情は、POCOの欠如とレイジーローディングの欠如です。これらの両方が.NET 4で対処されているように見えます。0 http://blogs.msdn.com/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading.aspx

潜在的に高速であることに加え(を始めるために)または単純な、私は長期的には、SQLにLINQを使用して、特定の利点のかわかりません。誰も気付いていますか?

+0

レイジーロードが可能ですが、明示的にではありません –

3

Linq-to-SQLは素晴らしい技術で使いやすいので、デモ用に非常に適しており、より小さくてより簡単なプロジェクトにも最適です。 :SQL Serverのテーブルからメモリ内のオブジェクトへの1マッピング。

そして、それらはの最も制限制限されているLINQのツーSQL:

  • のSQL Serverのみ
  • ストレート1:メモリ内のオブジェクトへのテーブルから1マッピング

それは大丈夫だ場合あなたと一緒にLinq-to-SQLを使いましょう!是非 - MSはまだ機能を追加し、.NET 4.0用に修正しています。

Entity Frameworkは、他のポスターが正式に言及しているように(現在のところ、POCOサポートはなく、「ドメイン設計第1」のアプローチや他の多くの方法もあります)、いくつかのいぼがあります。しかし、EF v4のフィーチャーセットは非常に魅力的なように見え、Linq-to-SQLにはお金を稼ぐことができます!

エンタープライズ環境でのEFとLinq-to-SQLの主な利点は、データベースの独立性(Oracle、Firebird、DB2など)に重要な役割を果たします。概念的な層と物理的な記憶層の間のマッピングのおかげで、データベースの物理的な記憶域モデルとはかなり違って見えるオブジェクトモデルを使用しています。

これは本当にあなたが必要とする問題です:開始するには簡単な方法(デモや簡単なアプリケーション)が必要ですか?そして、あなたの選択は明らかにLinq-to-SQLです(少なくとも今のところ)。 SQL Server以外のバックエンドに対して柔軟なマッピング方法が必要ですか?その選択はEntity Frameworkになります。

Marc

関連する問題