Jus*_*tch 5 c# repository unit-of-work
在过去一周左右的时间里,我一直在阅读很多关于存储库模式的文章和教程.许多文章将存储库模式与工作模式单元紧密联系在一起.在这些文章中,我通常会找到与此类似的代码:
interface IUnitOfWork<TEntity>
{
void RegisterNew(TEntity entity);
void RegisterDirty(TEntity entity);
void RegisterDeleted(TEntity entity);
void Commit();
void Rollback();
}
interface IRepository<TKey, TEntity>
{
TEntity FindById(TKey id);
IEnumerable<TEntity> FindAll();
void Add(TEntity entity);
void Update(TEntity entity);
void Delete(TEntity entity);
}
class Repository : IRepository<int, string>
{
public Repository(IUnitOfWork<string> context)
{
this.context = context;
}
private IUnitOfWork<string> context;
public void Add(string entity)
{
context.RegisterNew(entity);
}
public void Update(string entity)
{
context.RegisterDirty(entity);
}
public void Delete(string entity)
{
context.RegisterDeleted(entity);
}
/* Entity retrieval methods */
}
Run Code Online (Sandbox Code Playgroud)
我是否正确理解工作单元对象是为了处理底层数据存储中的任何对象的添加,更新或删除(在我的例子中,是我通过LDAP与之通信的目录服务)?如果这是真的,它不应该处理任何对象的检索吗?为什么这不是建议的UoW界面的一部分?
ARepository负责数据 - 获取数据、更新和其他 CRUD 操作,提供持久性无知。
A Unit Of Work(uow),正如 Marin Fowler 所说:
维护受业务事务影响的对象列表,并协调更改的写出和并发问题的解决。
uow 将协调对象上的多个操作 - 它可能会或可能不会使用存储库来保存这些更改。
| 归档时间: |
|
| 查看次数: |
1784 次 |
| 最近记录: |