LINQ to SQL

LINQ to SQL と LINQ to Entities のロードマップ

.NET Framework 3.5 SP1では、LINQを使ったデータベースアクセスの手法が2つ(LINQ to SQLとLINQ to Entities)存在していて、どっちを使うべきか迷いどころだったわけですが、MSの方針が明確になったみたい。Update on LINQ to SQL and LINQ to Entities Ro…

クエリ式とメソッド呼び出しの関係

こんなかんじで var employees = from e in db.Employee where e.Salary > 2000 orderby e.EmployeeName select e;SQLっぽく書けるけど(これをクエリ式という)、上のクエリ式は次のようにメソッド呼び出しで書くのとなんら変わらない。クエリ式はこのよう…

ConcatとUnionのちがい

LINQのConcatはSQLのUNION ALL、LINQのUionはSQLのUNIONに変換されました。 Concat LINQ var query = (from e in db.Employee select e.EmployeeName) .Concat (from d in db.Department select d.DepartmentName); SQL SELECT [t2].[EmployeeName] FROM ( S…

結合

今日は結合の基本的なものを試してみました。 MSDNだと、このあたりで説明されています。 暗黙的な外部結合 関連をたどると外部結合のクエリが発行されます。JPAとは違ってますね。JPAのJPQLでは関連をたどると内部結合になったはず。結合とは関係ないけど、…

グループ化結合

外部結合を実現するために使ったinto式と組み合わせたjoin句ですが、これはグループ化結合というらしいです。 MSDNの説明 join 句 結合演算 グループ化結合の例 どうもDepartmentを左側に持ってきたほうがわかりやすいかも。 匿名型を使わずに書いてみました…

LINQ to SQL で追加、更新、削除

Visual Studion 2008 の Express Editionでいろいろと動かしてみました。DBのスキーマはよくある、Department、Employeeで。DepartmentとEmployeeは1対多でEmployeeがDepartmentに対する外部キーを持っています。エンティティのコードはVisualStudioで自動生…

LINQ to SQL を触り始めました

LINQ to SQLってあっさりしたO/Rマッパーだと思っていたんですが、遅延ローディングがあったり、JPAのフェッチ結合みたいなのがあったり、JPAの永続コンテキストみたいなのがあったり、一応継承のマッピングもサポートしていたり(単一継承のみ)、と思って…