.NET Framework 3つのDB接続方法の使い分け

.NET FrameworkではADO.NET、LINQ to SQL、Entity Frameworkの三種類の接続方法が提供されています。どの接続方法を選択するのが良いのでしょうか?

ADO.NET

もっとも古くから提供されている接続方法です。
原則としてSQL文を直接記述するので、SQL Serverのすべての機能を利用することができます。一方で静的型チェックなどの恩恵を受けることが難しい(型付きDataSetを使えば可能だが面倒)のでコーディング効率が落ちそうですが、ユーザーコントロールとのデータバインディングを使用すればコーディング効率も決して悪くはありません。

LINQ to SQL

SQL Serverのスキーマを元にクラスを自動生成する簡易的なORマッパーです。
原則として自動生成されるSQLを使うことになるので、一般的なORマッパーと同じく非効率なSQL文が生成される事によるデメリットもあります。その一方で一旦データベースから取得したデータに対して、さらに検索や集計をかける事も容易にできるのでうまく活用すればデータベースの負荷を下げる可能性もあります。静的型のチェックによる恩恵もあるのでADO.NETに比較してコーディングは楽になるでしょう。
.NET 3.5から提供されていますが、その後は殆どアップデートされておらず、プロダクトの継続性に疑問符が付きます。

Entity Framework

LINQ to SQLとほぼ同時期、.NET 3.5 SP1から提供されている接続方法です。
Entity Frameworkはクラス設計を元にSQL Serverのスキーマを生成するORマッパーです。先にクラス設計を行うので既存のデータベースに対して利用するのは難しく、利用できるのは新規に設計するときに限られます。また逆にEntity Frameworkを使わずにSQL Serverにアクセスする必要が生じた場合に苦労する可能性があります。

何を使えばよいのかは時と場合によります。私は静的型のチェックによる恩恵を得られ、既存データベースへ適用できる点でからLINQ to SQLの活用機会が多いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です