EntityFrameworkならプロジェクト作成後30秒でデータ表示ができるんだよ【C#】


事前準備

  • データベースの用意

    • SQLServerを使用します
      サーバー名:MYCOMPUTER
  • プロジェクトの作成

    • WindowsFormアプリケーション
    • VisualStudio2019Communitty
    • .NetFramework4.7.2

本題

以下の順序で説明します。

  • 1. NuGetでEntityFrameworkCoreを取得
  • 2. EntityFrameworkCore付属のツールでDBモデルの自動生成
  • 3. DB接続&データ取得及びデータ表示

最終結果

VIEW「v_users」のデータを全件取得・表示する。

NuGetで「EntityFrameworkCore」をインストール(10秒)

「NuGetパッケージの管理」の「参照」タブに「EntityFrameworkCore」と入力して「インストール」を押下。


※「出力」ウィンドウのログがおとなしくなるまで待機

DBモデル(Entity?)の自動生成(10秒)

適当なフォルダを作成して右クリック→「新しい項目」「データ」「ADO.NET Entity DataModel」を選択。

データベースからEF Designerを選択

サーバ名にSQLServer名を入力→データベースを指定。

全テーブル&全ビューを指定

各テーブルのモデルが自動生成されます。

フォームのDBDataGridに表示(10秒)

Form1のLoadイベントにリスト取得用コードを記載

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        using(var db = new onceEntities())
        {
            // VIEW(v_users)全件をリスト型でDataSourceに設定
            dataGridView1.DataSource = db.v_users.ToList();
        }
    }
}

実行。ね?簡単でしょ?

以上です

ちなみに・・・

Entityのプロパティ名であれこれできます。

private void Form1_Load(object sender, EventArgs e)
{
    using(var db = new onceEntities())
    {
        // VIEW(v_users)全件をリスト型でDataSourceに設定
        dataGridView1.DataSource = db.v_users
                                        .Where(s => 1 < s.id )  // IDが1より大きい
                                        .Select(s => new { s.id 
                                                            , s.last_name
                                                            , s.first_name
                                                            , s.value })// 射影(?)
                                        .OrderByDescending(s => s.id)   // IDの降順
                                        .ToList();
    }
}

たった数行!直観的!

他にも同様のコード量でInsert, Update, Deleteできます。

使用しました

おわりに

30秒でできたよね。
EntityFrameworkをもっと業務で利用していきたいという思いで書きました。

読んでいただきありがとうございました。

※今回、EntityFrameworkのデータベースファーストという方式で記事を書きました。

以上