DDDSample,控制器中是否应该有repository.save?

时间:2011-12-31 10:28:29

标签: c# nhibernate domain-driven-design

我正在查看DDD sample at Codeplex提供的.net的DDD示例,并尝试了解各个层如何与DDD一起使用。

通过示例,我可以看到创建新货物的时间,聚合根货物通过BookingService.BookNewCargo()调用中的存储库存储。但是,当我在BookingService中分配新路由或更改目的地(AssignCargoToRoute()或ChangeDestination()调用时)我还希望调用CargoRepository.Store()。

使用Nhibernate的代码示例,我之前没有使用过。

我错过了什么?

换句话说,如果没有调用Store(),聚合如何保持持久?

JD

2 个答案:

答案 0 :(得分:1)

嗯,我在域中看到过许多switch语句,似乎域中缺少一些核心术语。乍一看,一些地区似乎有相当多的仪式,但嘿,这只是第一印象。

udi dahan的域事件模式已经在这里使用,有一个事件处理程序“货物已分配给路线”,它似乎存储了有问题的对象。注意domainevents类的用法以及正确的事件类,我希望能告诉你是什么触发了商店。

答案 1 :(得分:0)

以下是我写的示例应用程序:

http://clientdatasystem.codeplex.com/SourceControl/list/changesets

这是我的随行博客:

http://lucidcoding.blogspot.com/2011/10/enterprise-software-architecture-how-to.html

正如您在我的博客中所述,我并未将其描述为DDD,而是遵循域模型模式。它比货物应用程序更简单,可以更好地满足您的需求。我遵循创建和保存的模式,并且还更新并保存您期望的。我不是说我的样本比埃里克·埃文斯更好(我不敢!)但是货物申请并不是一个基本的,精简版本。