Linq To SQLとLinq To Entities2007年08月02日 09時08分07秒

VisualStudio2008 beta2が公開されたのでLinqについていろいろ調べているのですが、Linqからデータベースにアクセスするには「Linq To SQL」と「Linq To Entities」の2種類があるようです。
SQLの方はLinqをSQLに変換してデータベースに発行するもの、「Linq To Entities」はADO.NET Entity Frameworkを通してアクセスするという違いがあるようです。
この2つの技術の違いについてまとめているブログがありました。以下の表はそのブログからの引用です。

Feature

LINQ to SQL

LINQ to Entities

Language Extensions Support

Y

Y

Language Integrated Database Queries

Y

Y

Many-to-Many (3way Join/Payload relationship)

N

N

Many-to-Many (No payload)

N

Y

Stored Procedures

Y

N (to be added)

Entity Inheritance

N

Y

Single Entity From Multiple Tables

N

Y

Identity Management / CRUD features

Y

Y



まとめるとLinq To Entitiesの方が複数のテーブルを1つのエンティティとして扱ったり、多対多の関係をダイレクトに表現できたりと柔軟なことができるようになっているようです。
Linq To SQLは1テーブル1エンティティに限定される上にSQLServerでしか使用できないなどいろいろな制限があります。
実際のプロジェクトに使うなら絶対にLinq To Entitiesなのですが、残念ながらこれはVS2008には含まれず、来年の半ば頃にVS2008のアップデートとして提供されるようです。
それにしてもLinqの情報は日本ではまだ少ないですね。Teched2007が始まれば情報交換もどんどん進むんでしょうか。