我在 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 instance 并返回 Repository 的新实例 DataContext 被注入(inject)到 Repository 中
abstract class Repository<TEntity> : IRepository<TEntity> where TEntity : EntityBase
{
private readonly IDataContext _context;
protected Repository(IDataContext context)
{
_context = context;
}
}
作为 IRepository 作为 IDataContext 在 IoC contanier 中注册为每个依赖项的实例, 以及我需要什么我想通过以下方式使用工作单元:
void SomeMethod()
{
using (var unitOfWork = _unitOfWorkFactory.Create())
{
int id = 1;
var entity = _repository.GetById(id);
// some code
repository.Commit();
}
}
如何在 IoC 中正确实现此逻辑和注册,或者在这种情况下我应该考虑其他方法,解决此问题的最佳方法是什么?
最佳答案
不要混淆生命周期。存储库工厂也可以限定范围。性能损失很小。
通过进行该更改,您可以简单地在存储库工厂构造函数中采用工作单元。
关于c# - 如何使用 Entity Framework 4 在桌面服务器端应用程序中正确实现每个范围和存储库的工作单元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15614154/