我在互联网上看到了很多具有以下或类似签名的存储库模式的例子:
public void IRepository<T>
{
void Insert(T object);
void Update(T object);
void Delete(T object);
T GetById(int id);
IEnumerable<T> GetAll();
}
让我感到困惑的是,为什么CUD元素是Repository模式的一部分? 根据{{3}},CUD操作应该是工作单元模式的一部分。
我多年来一直在使用Fowler的EF方法而且效果很好。我认为它可以与任何其他ORM一起使用。
我感兴趣的是,有人可以从架构和逻辑的角度解释为什么我们应该将CUD操作放在Repository模式中?很明显,这两种方法都有效,但我们为什么要做另一种呢?在CQRS精神中,福勒的风格不是更多吗?
答案 0 :(得分:1)
工作单元(如您提供的链接中所述)会跟踪数据库中的更改内容。它保持跟踪,不更新。最后它指出了由于你的工作而需要做的所有改变数据库的事情(引自你的链接)。承诺工作单元归结为调用(通常是几个)存储库来一次性执行实际的CUD操作