【Entity Framework】DbContextクラスを作成してデータベースに接続
Entity Frameworkの概念モデルを使用して、データベースに対して処理を行う場合、DbContextクラスを利用することになります。このDbContextクラスとは一体どういったものなのかをサンプルソースとともにここで確認しましょう。
- プログラマー
- DbContextクラスを実装しようと思いますが、どうやって実装すればいいのでしょうか?
- プロジェクト
リーダー - DbContextクラスはEntity Frameworkを導入すれば利用できるようになります。まずはNuGetパッケージ管理からEntity Frameworkをインストールしましょう。その後は、using System.Data.Entity;をプログラム上部にコーディングし、各々が新しく作成したクラスにDbContextクラスを継承するなどして使用します。
DbContextクラスのできること
Entity Frameworkでは、データベースへの検索、更新、登録、削除といった基本的な操作は、DbContextクラスを使用して行うことができます。
Add()関数を用いることで、各々が作成した変数やプロパティに対してのデータの設定を行うことができます。しかし、この状態ではまだデータベースに対しての処理はなされていません。SaveChanges()関数を利用することで、設定した値が実際にデータベースに反映されます。このように、データベースの操作を簡単にできる関数も用意されているため、Entity Framework初心者の方でも簡単にコーディングできるのではないでしょうか。
DbContextを利用する場合、内容はDispose(破棄)するまで保持され続けます。さらに、DbContextは内部に設定したオブジェクトの状態を保持していますので、大量データを扱う場合は、メモリ不足に陥る場合があります。以上の点に注意することが必要です。
実際にデータベースに接続してみましょう
ここではDbContext クラスを実際に活用して、SQL Serverにデータを登録します。サンプルソースはWindows フォームで作成しています。
1
|
<connectionStrings><add name="Model1" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=WindowsFormsApp8.Properties.Classtest;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /></connectionStrings></configuration>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
using System.Data.Entity;
namespace WindowsFormsApp8
{
class Classtest : DbContext
{
//コンストラクター
public Classtest()
: base("name=Model1")
{
Database.SetInitializer(
new MigrateDatabaseToLatestVersion
<Classtest, MyDbConfiguration>());
}
//デストラクター
~Classtest()
{
}
//破棄
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
}
//データベース設定用
public DbSet<City> City { get; set; }
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
using System.Data.Entity.Migrations;
namespace WindowsFormsApp8
{
class MyDbConfiguration
: DbMigrationsConfiguration<Classtest>
{
public MyDbConfiguration()
{
AutomaticMigrationsEnabled = true;
}
}
}
|
1
2
3
4
5
6
7
8
|
namespace WindowsFormsApp8
{
class City
{
public string Id { get; set; }
public string CityName { get; set; }
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
using System;
using System.Windows.Forms;
namespace WindowsFormsApp8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (var context = new Classtest())
{
context.City.Add(new City
{
//値を保持
Id = "001",
CityName = "Tokyo",
});
//データベースにデータを反映させる
context.SaveChanges();
//破棄
context.Dispose();
}
}
}
}
|
画面実行からデータベース内容確認
- プログラマー
- DbContextクラスを使用して、データベースに新規データを登録できました!
- プロジェクト
リーダー - これでEntity Frameworkを活用しての基本的なデータベース操作もバッチリですね。あとは現場で実際に活用してコーディングに慣れていきましょう。
Entity Frameworkを使いこなしましょう
Entity Frameworkを活用してのデータベース操作は、現在では多くの開発現場で導入されています。C#での開発を求められる際には、Entity Frameworkで作成できるスキルの有無は非常に重要になってくるでしょう。今回紹介したDbContextクラスの利用方法もあわせて、自分のスキルにプラスになるように学習していきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
SQLServer新着案件New Job
-
蔦屋書新店オープンに関するアプリ開発/Oracle/東京都渋谷区/【WEB面談可】/在宅勤務
月給56万~59万円東京都渋谷区(神泉駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
放射線部門システムパッケージの運用保守/Oracle/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
放射線部門システムパッケージの開発のテスター/Oracle/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅)