2009-08-22 14 views
5

私は "Linq to SQL"について同僚と話し合いました。私は.NETでまだ新しいので、もっと学ぶ必要があると思います。 (まだ、30年の一般的なプログラミング経験が私の利益を左右するはずです)私はいくつかの本を読んでいました。新しいプロジェクトでは、ADO.NETエンティティデータモデルを使用することに決めました。私の同僚は、エンティティには多くの問題があることを「知っていた」ため、意見は一致しませんでした。それはデータベースサーバーでメモリリークを引き起こし、マイクロソフトはとにかくそれを中止するつもりです。彼は代わりにデータモジュールを使うべきだと教えてくれました。ちょうど私のプロジェクトに.dbmlを追加し、これの上にリンクを使用してください。「Linq to SQL」とは何ですか?

彼は5年間の.NET経験を持っています。これは私の経験より4年以上です。

私は、まだ...彼がその「SQLへのリンク」を考えている私には見えるので、私は「エンティティデータモデル」==バカか馬鹿か何でも彼を呼び出すことはありません

を自分自身を停止私はいくつかの小さな疑問を持ち始めました。 Linq to SQLは.dbmlファイルに基づいており、データモデルに基づいていると思いました。 LinqからSQLへの技術的な問題がいくつかあり、すぐにEntityモデルに置き換えられると聞いています。私の同僚がこれらの2つを混ぜると、彼は完全な馬鹿だ。しかし、彼は5年間の経験を持ち、私の従業員がいたずらを雇うことさえ疑うので、私は疑問を持ち始めました。

「Linq to SQL」とは何ですか?

答えて

19

LINQ to SQLとEntity Frameworkは同じものではありません。

これらは基本的にMicrosoftとLINQプロバイダの両方のORMです。 LINQ to SQLは.NET 3.5で導入され、Entity Frameworkは.NET 3.5 SP1で導入されました。

LINQ to SQLよりもMicrosoftがEntity Frameworkを優先しているのは事実ですが、コミュニティの多くの人がLINQ to SQLの改善を求めています。これはEFよりも簡単なフレームワークです。それに対応して、マイクロソフトでは、シンプルなモデルだけが必要な場合にEFを簡単に動作させるようにしようとしていると述べています。

LINQ to SQLは、特定のデータベース(SQL ServerとSQL Server CEなど)に対してのみ動作します。 Entity Frameworkは(少なくとも論理的に)データベースに依存しないため、データベースベンダーは独自のプロバイダをプラグインできます。

+4

偉大な答え!私はちょうどアレックスの同僚の言った "メモリリーク"に対処したいと思います。 ORMは特別な方法でデータベースにアクセスしません。他のすべての人のようにSELECT、UPDATE、およびINSERT文を実行します。結果はデー​​タベース側ではなくオブジェクト側に変換されます。データベースはORMがそれを照会していることさえ知りませんので、ORMは他のユーザーよりもメモリリークをどのように引き起こしますか?私の経験では、知識のある人は無意識のうちに、自分の知識の隙間を想定したり、「埋める」ことができます(私が知っていることは間違いありません)。 –

+0

ジョン、あなたは実際に仕事をしていますか?私はあなたがどこにでも素晴らしい答えを投稿してくれることを見ています。 –

+0

@ジェイソン:私はそうですが、土曜日ではありません:) –

2

あなたの友人はエンティティへのLINQが離れて起こっている、彼は後方にそれを持っていることが示唆された場合は、次のSQLへ

LINQはサポートされていますが、今後はあまり伸びていないことを継続します。エンティティへのLINQはここにあり、.NETのためのMicrosoftの優先データアクセスフレームワークです。

+2

+1この議論にとても重要です! – madcolor

+0

+1本当に!さらに、経験豊富な.NET開発者が違いを知っておく必要があるので、私の同僚は馬鹿だと結論づけています。ああ、そうですね...私は、私がエンティティを使い続けていることを明白に述べるだけで、彼を私の背中から追い払うことができました。その時点で、彼は干渉をやめようと決めました。 –