以下に、ASP.NET Coreでユニットオブワークを使用する方法とコード例をいくつか紹介します。
- ユニットオブワーククラスの作成 まず、ユニットオブワークパターンを実装するためのユニットオブワーククラスを作成します。このクラスは、データベースコンテキストと共に使用され、トランザクションの管理やデータベース操作の制御を行います。
public interface IUnitOfWork : IDisposable
{
IRepository<Entity> EntityRepository { get; }
// 他のリポジトリを追加する場合はここに追加します
void Save();
}
- ユニットオブワークの実装 ユニットオブワークを実装するために、具体的なクラスを作成します。このクラスでは、データベースコンテキストとリポジトリのインスタンスを管理し、トランザクションの開始と終了、データベース操作の保存を行います。
public class UnitOfWork : IUnitOfWork
{
private readonly DbContext _context;
public UnitOfWork(DbContext context)
{
_context = context;
EntityRepository = new Repository<Entity>(_context);
// 他のリポジトリを追加する場合はここに追加します
}
public IRepository<Entity> EntityRepository { get; }
public void Save()
{
_context.SaveChanges();
}
public void Dispose()
{
_context.Dispose();
}
}
- ユニットオブワークの使用 ユニットオブワークを使用するために、依存性注入(Dependency Injection)を利用します。
public class MyService
{
private readonly IUnitOfWork _unitOfWork;
public MyService(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public void PerformOperation()
{
// データベース操作を行います
_unitOfWork.EntityRepository.Add(new Entity { Name = "Example" });
_unitOfWork.EntityRepository.Update(new Entity { Id = 1, Name = "Updated Example" });
_unitOfWork.Save();
}
}
上記の例では、MyService
クラスがIUnitOfWork
をコンストラクタのパラメータとして受け取り、PerformOperation
メソッド内でユニットオブワークを使用してデータベース操作を行っています。
これらのコード例は、ASP.NET Coreにおけるユニットオブワークの基本的な使用方法を示しています。ユニットオブワークパターンは、データベースアクセスの効率化とトランザクション管理の強化に役立つため、大規模なアプリケーションの開発において特に有用です。