gpt4 book ai didi

c# - 存储库和工作单元——负责什么?

转载 作者:太空狗 更新时间:2023-10-29 23:27:03 26 4
gpt4 key购买 nike

在过去一周左右的时间里,我阅读了很多关于存储库模式的文章和教程。许多文章将存储库模式与工作单元模式紧密联系在一起。在这些文章中,我通常会找到类似这样的代码:

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 */
}

我是否正确理解工作对象单元是为了处理底层数据存储中任何对象的添加、更新或删除(在我的例子中,是我通过 LDAP 与之通信的目录服务)?如果那是真的,它不应该也处理任何对象的检索吗?为什么这不是建议的 UoW 界面的一部分?

最佳答案

Repository 负责数据 - 获取、更新和其他 CRUD 操作,提供持久性无知。

工作单元 (uow),如 Marin Fowler 所说:

Maintains a list of objects affected by a business transaction and coordinates the writing out of changes and the resolution of concurrency problems.

uow 将协调对对象的多个操作 - 它可能会也可能不会使用存储库来保存这些更改。

关于c# - 存储库和工作单元——负责什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com