工作单元和存储库模式做错了吗?

时间:2015-06-29 13:26:14

标签: repository-pattern unit-of-work cqrs

我在互联网上看到了很多具有以下或类似签名的存储库模式的例子:

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精神中,福勒的风格不是更多吗?

1 个答案:

答案 0 :(得分:1)

工作单元(如您提供的链接中所述)会跟踪数据库中的更改内容。它保持跟踪,不更新。最后它指出了由于你的工作而需要做的所有改变数据库的事情(引自你的链接)。承诺工作单元归结为调用(通常是几个)存储库来一次性执行实际的CUD操作