【DB2】DB2でLINQを使う(OKでした!!)

投稿日:

以前、

【DB2】DB2でLINQを使う(のに失敗)
【DB2】DB2でLINQを使う(準備が整う)

というのを書きました。
で、もしかすると別の案件で.NET+DB2っていうのが出てきそうな感じなので、
今日は仕事中に堂々と"調査"しました。

基本はこの↓ページに書かれていることをやります。
Develop a sample application using LINQ programming and the ADO.NET Entity Framework with IBM DB2, IDS, and U2 servers


まず、新規プロジェクトを作成します。
※設定する値等は、参照するdeveloperWorksの記事に極力合わせます。

testef01.jpg

作成するWindowsFormはこんな感じになります。
ComboBox:1コ
DataGridView:1コ
Button:2コ

testef02.jpg

Entity Data Modelはこんな感じで進めていきます。

testef03.jpg

「データベースから生成」を選択。

testef04.jpg

「新しい接続」ボタンをクリック。

testef05.jpg

下記画面のように選択します。

testef06.jpg

接続先のサーバーはとりあえずlocalhost。
ユーザーはdb2admin。
接続先データベースはSAMPLEに変更。
設定が終わった「テスト接続」をクリック。

testef07.jpg

問題が無ければ、接続テスト完了。

testef08.jpg

「次へ」ボタンを押すとDBと接続を開始します。

testef09.jpg

接続中・・・・

testef10.jpg

データベースオブジェクトを選択。

testef11.jpg

Entityモデルが生成されました。

testef12.jpg

で、こっからはソースコードの補足。


■closeボタンの実装(C#)

private void closeForm_Click(object sender, EventArgs e)
{
    m_context.Dispose();
    Close();
}


■フォームのロード処理の実装(C#)

private void Form1_Load(object sender, EventArgs e)
{
    m_context = new SAMPLEEntities();
    // SELECT * FROM EMPLOYEE のイメージ
    var query = from d in m_context.EMPLOYEE
                select d;
    try
    {
        // ComboBoxに設定するカラム(データ)
        this.comboBox.DisplayMember = "FIRSTNME";
        this.comboBox.DataSource = query;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

}


■ComboBoxが選択された際の実装(C#)

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        EMPLOYEE empList = (EMPLOYEE)this.comboBox.SelectedItem;
        // SELECT * FROM EMPLOYEE E, EMP_PHOTO EP
        // WHERE EP.EMPNO = E.EMPNO のイメージ
        var query = from o in m_context.EMP_PHOTO
                    where o.EMPNO == empList.EMPNO
                    select o;
        // データグリッドビューに設定
        dataGridView.DataSource = query;
        dataGridView.AutoResizeColumns(
                        DataGridViewAutoSizeColumnsMode.AllCells);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


この実装で、画面に何が出てくるかはお楽しみです♪