情報応用演習Ⅰ(2024)

【T2e】Entity Framework Core を用いたデータベースへのアクセス(6/6)

プロジェクトタイプC#コンソールアプリ※
プロジェクト名T2e
ソリューション名PIT2
ターゲットフレームワーク.NET 8.0(長期的なサポート)
最上位レベルのステートメントを使用しない使用する(チェックオフ)

※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!

注意
  • 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
    • 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
    • プロジェクトの作成作業についてはO/Rマッピングの必要性を参照せよ.

2e-6. Entity Framework Coreに新規データ登録

最後に,Entity Framework Core を用いたPostgreSQL側への書き込みも試してみよう. Program.cs を_に示すように変更する.

Program.csの内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using Microsoft.EntityFrameworkCore;
using T2e;

// ① データコンテキストクラスのインスタンスの生成(データベースとの接続を開始)
var context = new SampleDbHrContext();

// ② 新しい従業員の情報を作る
var newEmployee = new TblJugyoin()
{
    JugyoinNo = 300,
    Sei = "医療",
    Mei = "太郎",
    LastName = "iryo",
    FirstName = "taro",
    Email = "t-iryo",
    ShugyoBi = new DateOnly(2020, 4, 1),
    ShokushuNo = "ST_CLERK",
};

// ③ データベースに↑を追加する.
context.Add(newEmployee);

// ④ 変更を保存する(ここで実際にINSERT文が実行される)
context.SaveChanges();

補足として16行目に現れているDateOnly構造体は,.NET 6.0で導入されたデータ型である. DateOnly構造体は,DateTime構造体に似るが時刻を含まない構造体である.

書き換えたら実行してみよう.特に何も表示されないはずだがそれで正常な動作である(このプログラムには表示処理がないため). _を見ると分かるように,C#のプログラムとしては新しくTblJugyoinクラスのインスタンスを作り(②), それをデータベースに追加しているに過ぎない.③の.Add()メソッドなどでメモリ上のデータベースクラスへの登録(追加)が行われ, 最終的に④の.SaveChanges()メソッドを呼び出すと実際にデータベースへの書き込みが行われる(この操作手順はのちのち重要となるので覚えておこう) . Entity Framework Core を用いると,このようにデータベースの存在をあまり意識せずにデータベースを操作をすることができる.

コマンドラインターミナル1リスト2e-4-6のコマンドを実行して直前に実行されたSQL文も確認しておこう. _のようにINSERT文が実行されていることが分かる.

2022-01-12 16:10:55.187 JST [44728] LOG:  execute <unnamed>: INSERT INTO tbl_jugyoin (jugyoin_no, buai, bumon_no, email, first_name, kanrisha_no, kyuyo, last_name, mei, phone_no, sei, shokushu_no, shugyo_bi)
        VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
2022-01-12 16:10:55.187 JST [44728] DETAIL:  parameters: $1 = '300', $2 = NULL, $3 = NULL, $4 = 't-iryo', $5 = 'taro', $6 = NULL, $7 = NULL, $8 = 'iryo', $9 = '太郎', $10 = NULL, $11 = '医療', $12 = 'ST_CLERK', $13 = '2020-04-01'
直前のSQL文の取得コマンドの実行結果

また,pgAdminでも実際に変更が反映されていることを確認しておこう.

pgAdminを起動して,「Servers」→「PostgreSQL」→「SampleDB_hr」を右クリックし「Query Tool」を起動し リスト2d-4-1と同じSQL文を実行する. 実行結果は_のようになる.コード上で作成した「医療太郎」なる従業員が追加されていることが分かる.

pgAdminで従業員テーブルの状態を確認する

以上を確認したら,今回のチュートリアルは完了である. なお今回は課題が出題されている.忘れずに取り組むこと


  1. タブのタイトルは「 開発用PowerShell 」もしくは「 Developer PowerShell 」となっている. ↩︎

Last updated on 2024-04-26
Published on 2024-04-26

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.