mikeo_410


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 の等しいレコードを抽出することができます。

  1. var db3 = new DataClasses3DataContext();
  2. var rows2 = from t1 in db3.Table_1 join t2 in db3.Table_2 
  3.             on t1.content_id equals t2.content_id 
  4.             select new { t1.title, t2.content };
  5. foreach (var o in rows2)
  6.     Debug.WriteLine(o.title + " " + o.content);

  このテーブルには、リレーションが設定されていたので、以下のようなアクセスも可能になっています。

  1. var db3 = new DataClasses3DataContext();
  2. var rows2 = from t1 in db3.Table_1 select new { t1.title,t1.Table_2.content};
  3. foreach (var o in rows2)
  4.     Debug.WriteLine(o.title + " " + o.content);

   この例では、t1.Table_2.content のように、Table_2 のフィールドが Table_1 の行の一部のように参照されています。


mikeo_410@hotmail.com