【Entity Framework】DbContextクラスを作成してデータベースに接続

Entity Frameworkの概念モデルを使用して、データベースに対して処理を行う場合、DbContextクラスを利用することになります。このDbContextクラスとは一体どういったものなのかをサンプルソースとともにここで確認しましょう。
- PG
- DbContextクラスを実装しようと思いますが、どうやって実装すればいいのでしょうか?
- PL
- 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(); } } } } |
画面実行からデータベース内容確認
- PG
- DbContextクラスを使用して、データベースに新規データを登録できました!
- PL
- これでEntity Frameworkを活用しての基本的なデータベース操作もバッチリですね。あとは現場で実際に活用してコーディングに慣れていきましょう。
Entity Frameworkを使いこなしましょう
Entity Frameworkを活用してのデータベース操作は、現在では多くの開発現場で導入されています。C#での開発を求められる際には、Entity Frameworkで作成できるスキルの有無は非常に重要になってくるでしょう。今回紹介したDbContextクラスの利用方法もあわせて、自分のスキルにプラスになるように学習していきましょう。