Entity Framework を使用した MySQL データベースのチュートリアル
Entity Framework を使用した MySQL の利用方法
必要なもの
- .NET Framework 4.5 以降
- Visual Studio 2013 以降
- MySQL 5.6 以降
- Entity Framework 6 以降
- MySQL Connector/Net 8.0 以降
手順
-
NuGet パッケージのインストール
Visual Studio ソリューションに以下の NuGet パッケージをインストールします。
MySql.Data.EntityFramework
-
接続文字列の作成
app.config
ファイルに、MySQL データベースへの接続文字列を追加します。<connectionStrings> <add name="MyContext" connectionString="server=localhost;database=mydatabase;user=root;password=password;" /> </connectionStrings>
-
エンティティの作成
データベースのテーブルに対応するエンティティクラスを作成します。
public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
-
コンテキストの作成
DbContext
クラスから派生したコンテキストクラスを作成します。public class MyContext : DbContext { public MyContext() : base("MyContext") { } public DbSet<Person> People { get; set; } }
-
データへのアクセス
DbContext
クラスのインスタンスを使用して、データへのアクセス、追加、更新、削除を行うことができます。using (var context = new MyContext()) { // データの追加 var person = new Person { Name = "John Doe", Age = 30 }; context.People.Add(person); context.SaveChanges(); // データの取得 var people = context.People.ToList(); // データの更新 var person = context.People.Find(1); person.Name = "Jane Doe"; context.SaveChanges(); // データの削除 var person = context.People.Find(1); context.People.Remove(person); context.SaveChanges(); }
- MySQL 8.0 以降を使用する場合は、
utf8mb4
文字コードを使用することを推奨します。
関連キーワード
- .NET
- MySQL
- ORM
- データベース
- オブジェクト関係マッパー
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
namespace MyApplication
{
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class MyContext : DbContext
{
public MyContext() : base("MyContext")
{
}
public DbSet<Person> People { get; set; }
}
class Program
{
static void Main(string[] args)
{
using (var context = new MyContext())
{
// データの追加
var person = new Person { Name = "John Doe", Age = 30 };
context.People.Add(person);
context.SaveChanges();
// データの取得
var people = context.People.ToList();
// データの更新
var person = context.People.Find(1);
person.Name = "Jane Doe";
context.SaveChanges();
// データの削除
var person = context.People.Find(1);
context.People.Remove(person);
context.SaveChanges();
}
}
}
}
コードの説明
Person
クラスは、データベースのPeople
テーブルに対応するエンティティクラスです。MyContext
クラスは、DbContext
クラスから派生したコンテキストクラスです。Main
メソッドは、データの追加、取得、更新、削除を行うコードを実行します。
実行方法
- Visual Studio で新しい C# コンソールアプリケーションプロジェクトを作成します。
- NuGet パッケージマネージャーを使用して、
EntityFramework
とMySql.Data.EntityFramework
パッケージをインストールします。 - プロジェクトを実行します。
出力結果
// データの追加
Person { Id = 1, Name = "John Doe", Age = 30 }
// データの取得
[
Person { Id = 1, Name = "John Doe", Age = 30 }
]
// データの更新
Person { Id = 1, Name = "Jane Doe", Age = 30 }
// データの削除
ADO.NET は、.NET Framework で提供されるデータアクセス API です。ADO.NET を使用して、直接 MySQL データベースに接続し、クエリを実行し、データを取得できます。
MySQL Connector/Net
MySQL Connector/Net は、MySQL データベースに接続するためのオープンソースの ADO.NET ドライバーです。MySQL Connector/Net を使用して、ADO.NET コードを使用して MySQL データベースにアクセスできます。
Entity Framework 以外にも、NHibernate や Linq to SQL などの .NET 用 ORM フレームワークがいくつかあります。これらのフレームワークを使用して、MySQL データベースにアクセスすることもできます。
どの方法を選択するべきか
どの方法を選択するかは、アプリケーションの要件と開発者のスキルセットによって異なります。
- エンティティフレームワーク は、初心者にとって使いやすいオプションです。
- ADO.NET は、より多くの制御と柔軟性を提供します。
- MySQL Connector/Net は、MySQL データベースに特化した ADO.NET ドライバーです。
例
ADO.NET を使用した MySQL への接続
using System.Data.SqlClient;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
using (var connection = new SqlConnection("server=localhost;database=mydatabase;user=root;password=password;"))
{
connection.Open();
var command = new SqlCommand("SELECT * FROM People", connection);
var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("{0} {1} {2}", reader["Id"], reader["Name"], reader["Age"]);
}
}
}
}
}
mysql .net entity-framework