gpt4 book ai didi

asp.net-mvc-3 - 工作单元和存储库模式是一起使用还是两个解决方案?

转载 作者:行者123 更新时间:2023-12-01 01:27:39 24 4
gpt4 key购买 nike

看完这篇 Testability and Entity Framework 4.0
昨天的文章大约 75 次,我不清楚作者想说什么。他似乎表明 UoW 和存储库模式是用于解决类似问题的两种不同模式。换句话说,UoW 更适用于需要在提交前进行编排的多对象,而 Repository 则适用于更直接的持久化。
当我在网上进行更多搜索以找到 chalice 框架以允许我对我的应用程序进行单元测试时,我看到更多的文章似乎暗示 UoW 是存储库模式的一部分,反之亦然。
哪个解释是正确的?
在一天结束时,我希望能够隔离我的应用程序,以允许将数据模拟到内存对象中。

最佳答案

您遇到的问题是人们误解了存储库模式。

存储库的基本思想是,您应该能够将数据视为一个大集合,而不必担心其背后的内容。这意味着如果您将一个对象添加到集合中,您不必担心它是否已被保存。因此,存储库应该始终坚持每个 Action 。

另一方面,UnitOfWork 用于协调对必须一起提交或回滚的数据库的多个调用。标准的银行账户转账就是一个例子。我不想一次保留对一个银行帐户的更改,因为如果我在保存第二个银行帐户时遇到问题,退出会变得更加困难。

就测试而言,两者都有效。这真的很容易(以 Moq 为例)。

public void UpdateAddress()
{
// Arrange
User user = // Build your user somehow..
myUnitOfWorkMock.Setup(x => x.Get<User>(It.IsAny<long>())).Returns(user);

MyService sut = new MyService(myUnitOfWorkMock);

// Act
sut.ChangeAddress(userId, "1234 Copperhead Road");

//Assert
Assert.AreEqual("1234 Copperhead Road", user.Address);
}

关于asp.net-mvc-3 - 工作单元和存储库模式是一起使用还是两个解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681847/

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