LINQ to SQL
.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っぽく書けるけど(これをクエリ式という)、上のクエリ式は次のようにメソッド呼び出しで書くのとなんら変わらない。クエリ式はこのよう…
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を左側に持ってきたほうがわかりやすいかも。 匿名型を使わずに書いてみました…
Visual Studion 2008 の Express Editionでいろいろと動かしてみました。DBのスキーマはよくある、Department、Employeeで。DepartmentとEmployeeは1対多でEmployeeがDepartmentに対する外部キーを持っています。エンティティのコードはVisualStudioで自動生…
LINQ to SQLってあっさりしたO/Rマッパーだと思っていたんですが、遅延ローディングがあったり、JPAのフェッチ結合みたいなのがあったり、JPAの永続コンテキストみたいなのがあったり、一応継承のマッピングもサポートしていたり(単一継承のみ)、と思って…