5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at
1 / 2

事前準備

  • データベースの用意

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

    • WindowsFormアプリケーション

    • VisualStudio2019Communitty

    • .NetFramework4.7.2

      image.png

本題

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

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

最終結果

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

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

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

image.png
image.png

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

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

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

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

image.png

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

全テーブル&全ビューを指定
image.png

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

フォームの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();
        }
    }
}

実行。ね?簡単でしょ?

image.png

以上です

ちなみに・・・

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();
    }
}

たった数行!直観的!

image.png

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

使用しました

おわりに

30秒でできたよね。
EntityFrameworkをもっと業務で利用していきたいという思いで書きました。
読んでいただきありがとうございました。

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

以上

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?