LINQ to SQL クラス
「System.Data.Sqlite、Linq」で、テーブルの定義をするクラスを手書きしましたが、これは Vsual Studio でプロジェクトに「LINQ to SQL クラス」を追加して作るもののようです。
このクラスの追加はできるのですが、コードを自動生成するにはデータソースを貼りつける必要があります。
下図のように、左のパネルにあるTable1、Table2を中央のパネルに引きずっていきます。
貼りつけられれば、下図左のようなグラフィカルな表示になります。
しかし、MDB や SQLite のデータソースからテーブルを貼りつけると、右のようにエラーになり、貼りつけることができません。
何が貼りつけることのできる条件なのかわかりませんが、張り付けられる場合には、どんな使用感なのか試して置きます。
上の左図のデータベースは、SQL Server Management Studio で、新規に作成し、リレーションを設定してあります。
(おそらく、Visual Studio で、データーベースを作っても同じなのだと思います。)
リレーションをテーブル間の矢印で表しています。
2つのテーブルは、content_id で結ばれています。
前述の操作で、プロジェクトには、DataClasses3.dbmlが作られ、この中の DataClasses3DataContext を生成して使います。
まず、テーブルが2つあるので、join を使って content_id の等しいレコードを抽出することができます。
- var db3 = new DataClasses3DataContext();
- var rows2 = from t1 in db3.Table_1 join t2 in db3.Table_2
- on t1.content_id equals t2.content_id
- select new { t1.title, t2.content };
- foreach (var o in rows2)
- Debug.WriteLine(o.title + " " + o.content);
このテーブルには、リレーションが設定されていたので、以下のようなアクセスも可能になっています。
- var db3 = new DataClasses3DataContext();
- var rows2 = from t1 in db3.Table_1 select new { t1.title,t1.Table_2.content};
- foreach (var o in rows2)
- Debug.WriteLine(o.title + " " + o.content);
この例では、t1.Table_2.content のように、Table_2 のフィールドが Table_1 の行の一部のように参照されています。
|