想知道我是否可以在这里得到一些指导。在 DbContext 的 MSDN 页面 ( http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext%28v=vs.103%29.aspx ) 上,它声明:“表示单元的组合-Of-Work 和 Repository 模式,使您能够查询数据库并将更改组合在一起,然后将这些更改作为一个单元写回存储。”
我对存储库模式的理解是它提供了对数据持久层的抽象。与 EF 耦合的东西的具体实现如何被视为抽象?
另外,我将如何利用它作为工作单元模式?目前,我的工作单元有一个 ObjectContext 属性,以及我的每个存储库的一个属性:
public class UnitOfWork : IUnitOfWork
{
private TPSEntities _context = new TPSEntities();
private ICustomerRepository _customerRepository;
private IUsersRepository _UsersRepository;
public ICustomerRepository CustomerRepository
{
get
{
if (_customerRepository == null)
{
_customerRepository = new CustomerRepository(_context);
}
return _customerRepository;
}
}
public IUsersRepository UsersRepository
{
get
{
if (_UsersRepository == null)
{
_UsersRepository = new UsersRepository(_context);
}
return _UsersRepository;
}
}
public void Save()
{
_context.SaveChanges();
}
public void Save(string storedProcedure)
{
_context.SaveChanges();
//_context.ExecuteStoreCommand
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
_context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
然后我通过 DI 将我的工作单元对象注入到我的控制器中,然后我就走了。
有没有更好的方法来使用 DbContext 做到这一点?
谢谢,
克里斯