IoC コンテナの Unit of Work パターンの実装と登録に問題があります。問題は次のとおりです。サーバー側のクライアント サーバー アプリケーションでは、Entity Framework 4 ORM を使用しているデータベースにアクセスする必要があり、新しい DataContext を作成する必要があります。 Web MVC アプリケーションと同様に、クライアント アプリケーションからデータベースにアクセスします。Unit of Work パターンを使用する必要があることに気付きました。現在、次のように実装しています。
void SomeMethod()
{
using (var repository = _repositoryFactory.Create())
{
int id = 1;
var entity = repository.GetById(id);
// some code
repository.SaveOrUpdate();
}
}
ここで、_repositoryFactory は IoC で単一インスタンスとして登録され、DataContext がリポジトリに注入されたリポジトリの新しいインスタンスを返します
abstract class Repository<TEntity> : IRepository<TEntity> where TEntity : EntityBase
{
private readonly IDataContext _context;
protected Repository(IDataContext context)
{
_context = context;
}
}
IDataContext としての IRepository は依存関係ごとのインスタンスとして IoC contanier に登録されており、次のように Unit of Work を使用する必要があります。
void SomeMethod()
{
using (var unitOfWork = _unitOfWorkFactory.Create())
{
int id = 1;
var entity = _repository.GetById(id);
// some code
repository.Commit();
}
}
このロジックと登録を IoC でどの程度正しく実装するか、この場合は他のアプローチを検討する必要があります。この問題を解決する最善の方法は何ですか?