我在写一个使用DDD技术的应用程序。这是我第一次尝试DDD项目。这也是我的第一个绿地项目,我是唯一的开发者。我充实了域模型和用户界面。现在我开始持久层。像往常一样,我从单元测试开始。我在数据持久层中需要多少抽象级别?
[Test]
public void ShouldAddEmployerToCollection()
{
var employerRepository = new EmployerRepository();
var employer = _mockery.NewMock<Employer>();
employerRepository.Add(employer);
_mockery.VerifyAllExpectationsHaveBeenMet();
}
正如你所看到的,我没有写任何对Add()函数的期望。我得到了这一点,并意识到我还没有解决特定的数据库供应商。实际上,我甚至不确定它需要一个数据库引擎。平面文件或xml可能同样合理。所以我不知道我的下一步应该是什么。
我应该添加一个抽象层......说一个DataStore接口或寻找一个已经为我工作的现有库吗?如果可以的话,我想避免将程序绑定到特定的数据库技术上。
针对存储库接口的+1 – 2009-11-03 14:37:12
EmployerRepository实际上实现了IEmployerRepository接口,该接口公开CRUD操作。你是否建议我应该实现数据库感知的具体类,如SQLServerEmployerRepository,OracleEmployerRepository,FlatFileEmployerRepository等,直到我决定数据库技术? – 2009-11-03 14:49:37
在这种情况下,我试图TDD我的方式来实施IEmployerRepository,但我想我不能这样做,除非我要在存储库下面添加另一个抽象级别(这似乎没有添加任何有用的东西),编写和测试几个数据库相关的实现,或者选择一个数据库并坚持使用它。 – 2009-11-03 15:08:00