工作单元和存储库模式出错



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

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模式的一部分?根据Martin Fowler的说法,CUD操作应该是工作单元模式的一部分。

多年来,我一直在EF中使用Fowler方法,效果非常好。我认为它与任何其他ORM都可以正常工作。

我很感兴趣的是,如果有人能从体系结构和逻辑的角度解释,为什么我们要把CUD操作放在Repository模式中?很明显,这两种方法都有效,但我们为什么要做一种而不是另一种呢?福勒的风格不是更符合CQRS的精神吗?

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

最新更新