WinFormsではEntityFramwworkを使ってPostgreSQLへアクセスした実績はありますが、WPFましてや.NET Coreでは初めてなのできちんと動作できるか検証してみます。
まずはNuGetで「Npgsql.EntityFrameworkCore.PostgreSQL」をインストールします。
あと、何かと便利な「ReactiveProperty」も使ってます。
データベースで管理するデータは
id | serial |
名前 | text |
年齢 | integer |
とし、IDはPostgreSQL側で自動的に割り当てるようにします。
IDは必要なのか?といった疑問があるかもしれませんが、EntityFrameworkではプライマリキー(key属性のデータ)は必ず必要です。
今回は「アクセスする手法」が目的なのでデータベーステーブルはSQLコマンドで作ります。
usingの追加
プログラム内でデータベースのデータをアレコレするクラス
[Table("memberlist")]:データベースのテーブル名を示します。
[Key]:プライマリーキーを示します。
[Column("xxx")]:データベース上のカラム名を示します。
[Required]:入力が必須である事を示します。
「public long Id」や「public string Number」はプログラム内で使う変数です。
実際データベースにアクセスするにはDbContextを継承したインスタンスを用いて行います。
DbContextを継承したクラス
「UseNpgsql」にセットする文字は自分の環境にあった内容に変更してください。
自分が確認した中では「Port」の記述がなくても動いてます。
データベースへ書き込みする手段
1.クラス「Db」のインスタンスを生成する。
2.追加する「MenberList」クラスのインスタンスを生成して値をセットする。
3.DbクラスのインスタンスdbへAddする。
4.SaveChangesで保存する。
の順番で処理しています。
SQLコマンドのINSERTするのと同じですが、そう難しい処理ではありません。
(でもLINQのスキルは必須ですよ)
削除する方法
1.クラス「Db」のインスタンスを生成する。
2.削除するデータを抽出する。
3.DbクラスのインスタンスdbからRemoveする。
4.SaveChangesで保存する。
この動作はSQLコマンドのDELETEに該当します。
2の削除対象を抽出する手段はこれだけではないので分からない人はLINQを勉強しましょう。
無論SQLコマンドのUPDATEと同じ事も可能です。
あと、遅延評価だという事は忘れずにね。
サンプルはあくまで「アクセスできるか」だけに特化しているので、未入力チェックなどはしていませんので随時適切な処理が必要です。
0 件のコメント:
コメントを投稿