導入
データベーストランザクションは、一連の操作を一つの単位として扱い、全ての操作が完了するか、一つでも失敗した場合には全てを元に戻す(ロールバックする)ための仕組みです。これにより、データの整合性と安全性が保たれます。本記事では、C#の.NET8、EFCore8でMySQLデータベースを扱う際のトランザクションの基本的な使い方を解説します。
環境設定
.NET8SDKが必要です。インストールしていない場合は、下記からインストールしてください。
.NET のダウンロード (Linux、macOS、Windows) (microsoft.com)
続いて、プロジェクト作成後、下記のパッケージを追加します。
dotnet add package Microsoft.EntityFrameworkCore dotnet add package MySql.Data.EntityFrameworkCore
DbContextの設定
DbContext
を設定し、EF Coreがデータベース操作を行えるようにします。以下のコードを参考にしてください。
今回は簡単のために接続文字列をDbContext
に書いていますが、設定ファイル等から読み込めるようにしてください。
using Microsoft.EntityFrameworkCore; public class MyDbContext : DbContext { public DbSet<Employee> Employees { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL("server=localhost;database=myDatabase;user=myUser;password=myPassword"); } } public class Employee { public int Id { get; set; } public string Name { get; set; } public string Position { get; set; } }
トランザクションの開始
EF CoreのDatabase
プロパティを使用してトランザクションを開始し、管理します。
using var context = new MyDbContext(); using var transaction = context.Database.BeginTransaction(); try { context.Employees.Add(new Employee { Name = "Jane Doe", Position = "Web Developer" }); context.SaveChanges(); transaction.Commit(); Console.WriteLine("Transaction committed successfully."); } catch (Exception ex) { transaction.Rollback(); Console.WriteLine($"An error occurred: {ex.Message}"); }
2行目でトランザクションを貼っています。
6行目でDbContext
に値を追加し、7行目で確定させます。
9行目でトランザクションを完了させます。
13行目で例外があった場合、トランザクションをロールバックさせます。context.SaveChages()
実行後でも、例外が発生すれば、ロールバックさせます。
ベストプラクティス
DbContext
、トランザクションを使用する際には、その範囲を最小限にすることが推奨されます。また、エラーハンドリングを適切に行い、予期しない失敗からデータを保護することが重要です。
まとめ
MySql.Data.EntityFrameworkCore
を使用することで、EF Core 8とC#を用いたMySQLデータベース操作が容易になります。この記事が、より安全で効率的なデータベース管理の実現に役立つことを願っています。
コメントを残す