我在 IoC 容器工作单元模式中实现和注册时遇到问题,问题如下:在服务器端客户端-服务器应用程序上,我需要访问数据库我正在使用 Entity Framework 4 ORM,并且我需要为每个创建新的 DataContext从客户端应用程序请求数据库,类似于 Web MVC 应用程序。我意识到我需要使用工作单元模式,目前我是这样实现的:
void SomeMethod()
{
using (var repository = _repositoryFactory.Create())
{
int id = 1;
var entity = repository.GetById(id);
// some code
repository.SaveOrUpdate();
}
}
其中 _repositoryFactory 在 IoC 中注册为 Single 实例并返回 Repository 的新实例 DataContext 被注入 Repository
abstract class Repository<TEntity> : IRepository<TEntity> where TEntity : EntityBase
{
private readonly IDataContext _context;
protected Repository(IDataContext context)
{
_context = context;
}
}
作为 IRepository 作为 IDataContext 在 IoC 容器中注册为每个依赖项的实例,我需要的是我想以下列方式使用工作单元:
void SomeMethod()
{
using (var unitOfWork = _unitOfWorkFactory.Create())
{
int id = 1;
var entity = _repository.GetById(id);
// some code
repository.Commit();
}
}
在 IoC 中如何正确实现此逻辑和注册,或者在这种情况下我应该考虑其他方法,解决此问题的最佳方法是什么?